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

JQuery-.each()无法更改所选元素的类,jquery,each,Jquery,Each,当我遍历传递到函数中的一组HTML元素时,我试图根据测试在某些元素rel上设置一个类。设置类后,返回的内容似乎没有更改。我确信我的逻辑中有一个基本的脱节——为什么我的更改没有出现,有什么指导吗 此JSFIDLE以非活动方式显示它: HTML 您之所以会遇到这个问题,是因为您传入的是一个HTLM字符串,而不是实际的DOM节点,因此您正在更改与文档中实际节点无关的HTML片段上的类 要解决它,就要改变 fixit($("#testit").html()); 到 并修改该函数以使用DOM,而不是传入

当我遍历传递到函数中的一组HTML元素时,我试图根据测试在某些元素rel上设置一个类。设置类后,返回的内容似乎没有更改。我确信我的逻辑中有一个基本的脱节——为什么我的更改没有出现,有什么指导吗

此JSFIDLE以非活动方式显示它:

HTML


您之所以会遇到这个问题,是因为您传入的是一个HTLM字符串,而不是实际的DOM节点,因此您正在更改与文档中实际节点无关的HTML片段上的类

要解决它,就要改变

fixit($("#testit").html());

并修改该函数以使用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');
        }
    });
}

您是否有ID为15000_3_16010_relationship_Department-Path的元素?@adeneo-是的,有问题的元素存在。。。我在代码中放置了一个警报,设置了类,确认匹配成功。。。但是,在假定适当地设置了ins之后,在迭代新数据时仍然没有类更改。我创建了这个临时的JSFIDLE,但它对我有效。如果它的类别没有改变,div将是红色的:@NateKibler-我也把一个放在一起,以表明它不适合我。。。除了将其作为函数调用并传入数据之外,我看不出有什么区别。绝对正确。。。谢谢,我知道这一定是很明显的事情。你的建议解决了我的问题。
fixit($("#testit").html());
fixit($("#testit"));
function fixit(data) {
    $.each(data.find("a"), function (i, item) {
        var thisrel = $(item).attr("rel");
        if ( $('#' + thisrel).length > 0 ) {
            $(item).children().removeClass().addClass('tick');
        }
    });
}