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