在IE7中插入HTMLElement对象后,JQuery .find()失败

时间:2012-09-18 16:04:57

标签: javascript jquery dom internet-explorer-7

我有一对传递给函数的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);会更有意义,但即使你改变了,问题仍然存在。

3 个答案:

答案 0 :(得分:2)

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

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

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

insert.className = "insertedElement";

(“class”一词在JavaScript中保留,因此属性为“className”。)通常,“className”,“id”,“name”,“value”,“type”,“href”之类的东西“等,DOM元素可以和(我认为)应该被视为对象属性,而不是属性。

答案 1 :(得分:0)

查看此代码,我认为它应该可以在IE7中使用

$(document).ready(function(){

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

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

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


});

答案 2 :(得分:0)

此外,jQuery 1.8已经修复了;)