1

我有一对正在传递给函数的 HTMLElement 对象。一个是容器 div,第二个是附加到容器的。这按预期工作。为了以后找到子元素,我为这种类型的元素赋予了一个唯一的类(可以有多个)。这也按预期工作。但是,当我稍后去操作子元素时,jQuery .find(".myClass") 无法返回任何结果。以下代码在 chrome 和 ie8/9 中返回 1,但在 ie7 中返回 0:

$(document).ready(function(){
    var insert = document.createElement("div");
    insert.setAttribute("class","insertedElement");
    insert.appendChild(document.createTextNode("Some Text"));
    $(document.getElementById("container")).append(insert);
    alert($("#container").find(".insertedElement").length);
});

这是在 JSFiddle 中:http: //jsfiddle.net/tYfqk/

知道这里发生了什么,或者我该如何纠正它?

另外,请原谅上面做作的 $("document.getElementById("container")).append(insert); ,这只是为了说明我的对象是作为 DOM 元素出现的,而不是 jQuery 对象。我知道 $(" #container").append(insert); 在那里会更有意义,但即使你改变了问题仍然存在。

4

3 回答 3

2

旧版本的 IE 不允许您通过将“类”设置为属性来设置类。请改用 jQuery“addClass”。

$(insert).addClass("insertedElement");

或者只是设置“className”属性:

insert.className = "insertedElement";

(“class”这个词在 JavaScript 中是保留的,所以属性是“className”。)一般来说,像“className”、“id”、“name”、“value”、“type”、“href”等DOM 元素可以并且(我认为)应该被视为对象属性,而不是属性。

于 2012-09-18T16:10:17.723 回答
0

此外,jQuery 1.8 已经修复了这个问题;)

于 2012-09-18T16:24:30.823 回答
0

查看这段代码,我认为它应该在 IE7 中工作

$(document).ready(function(){

    var insert = $('<div></div>').addClass('insertedElement').text("Some Text");

    insert.appendTo($("#container"));

    alert($("#container").find(".insertedElement").length);


});
于 2012-09-18T16:16:07.847 回答