繁体   English   中英

$ .each只影响第一个元素吗?

[英]$.each only affects the first element?

遍历该类的所有元素,我看到下面的代码仅影响数组中的第一个元素,而控制台日志记录了其中的每个元素。

del = $('<img class="ui-hintAdmin-delete" src="/images/close.png"/>')

$('.ui-hint').each(function(){
                   console.log($(this));
                   if ($(this + ':has(.ui-hintAdmin-delete)').length == 0) {
                       $(this).append(del);
                   }
           });

元素都是非常简单的div,其中仅包含文本。 它们都没有我在if语句中寻找的类的元素,请仔细检查。 尝试更改语句(使用has()children()等)。 猜猜我在这里想念的很简单,哈哈。

将请输入。

我认为您需要的是(如果del应该是字符串,如果是dom元素引用,那么您需要在添加之前克隆它)

$('.ui-hint').not(':has(.ui-hintAdmin-delete)').append(function(){
    //you need to clone del else the same dom reference will be moved around instead of adding new elements to each hint
    return del.clone()
});

你可以这样做:

$('.ui-hint:not(:has(.ui-hintAdmin-delete))').append(del);

甚至不使用这里的each循环。 由于jquery代码将在内部遍历ui-hint类元素的所有后代,并将del元素仅追加到不具有任何.ui-hintAdmin-delete元素的后代。

虽然也可能有助于查看HTML,但请尝试将条件更改为

if (!$(this).hasClass('ui-hintAdmin-delete')) {
    $(this).append(del);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM