JQuery - .each()无法更改所选元素的类

时间:2014-03-31 20:39:20

标签: jquery each

当我迭代传递给函数的一组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
});

1 个答案:

答案 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');
        }
    });
}