当我迭代传递给函数的一组HTML元素时,我正在尝试根据测试在某些元素(rel)上设置一个类。设置完课程后,我正在返回的内容似乎没有被更改。我确信我的逻辑中存在一个基本的脱节 - 关于为什么我的更改没有出现的任何指导?
这个JSFiddle在(in)action中显示它:http://jsfiddle.net/spRvh/3/
HTML
<ul>
<li title = "ID: 3 " id = "ID1" rel = "departmentgroup" class = "leaf">
<a href = "#" class = "departmentgroup" rel = "15000_3_16010_relationship_Department-Path">
<ins class = "departmentgroup"> & nbsp; </ins>
Floating
</a>
</li>
</ul>
jQuery的:
newData = $.trim(data);
$.each($(newData).find("a"), function (i, item) {
thisrel = $(item).attr("rel");
if ($('#' + thisrel).length > 0) {
$(item).children().removeClass().addClass('tick');
}
});
$.each($(newData).find("a"), function (x, curr) {
alert($(curr).children().attr("class")); // no changes evident
});
答案 0 :(得分:0)
您收到此问题是因为您传入的是HTLM字符串,而不是实际的DOM节点,所以您要更改与完全无关的HTML上的类,这与HTML无关。文档中的实际节点。
要解决此问题,请更改
fixit($("#testit").html());
到
fixit($("#testit"));
并修改函数以使用DOM,而不是您传入的字符串
function fixit(data) {
$.each(data.find("a"), function (i, item) {
var thisrel = $(item).attr("rel");
if ( $('#' + thisrel).length > 0 ) {
$(item).children().removeClass().addClass('tick');
}
});
}