Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在循环jquery中筛选$(this)元素_Javascript_Jquery - Fatal编程技术网

Javascript 在循环jquery中筛选$(this)元素

Javascript 在循环jquery中筛选$(this)元素,javascript,jquery,Javascript,Jquery,我正在尝试对$(this)项以外的其他元素执行操作 $('.items').click(function(){ var myitem = $(this); $(".items").each(function() { if (myitem == $(this)){ break; } else { //perform action } }); }); 我哪里出错了?有没有

我正在尝试对
$(this)
项以外的其他元素执行操作

$('.items').click(function(){

    var myitem = $(this);

    $(".items").each(function() {

        if (myitem == $(this)){
            break;
        } else {
            //perform action
        }

    });
});
我哪里出错了?有没有更好的方法?

尝试使用
.not()
函数过滤掉当前元素

$('.items').click(function(){
  $('.items').not(this).each(function(){
    //perform action here.
  });
});
使用
.not()
避免

试试这个

$(".items").not($(this)).each(function() {


});

按照你的代码

$(".items").not(myitem).each(function() {


});
您可以使用
not()
忽略单击的元素:

$(".items").not(this).each(function() {

});

出了什么问题?


当使用
jQuery
方法(也称为
$
)时,将创建jQuery对象的新实例,其中包含与选择器匹配的元素列表以及jQuery方法的丰富原型

您的错误是尝试比较两个不同的实例

您可以通过进行以下更改来比较元素本身:

// change this:
var myitem = $(this);
// to this:
var myitem = this;

// change this:
if (myitem == $(this)){
// to this:
if (myitem == this){
除非您打算使用jQuery对象功能,否则没有理由启动新实例。只要在可能的情况下使用元素本身。这是避免此类用例的最佳实践。性能方面

最佳解决方案


但在您的情况下,最好的解决方案是所有其他答案中提到的,使用jQuery的方法从新创建的实例中排除元素。

您的意思是
$(this)
而不是
this
?@EhsanSajjad why$(this)?我认为单用“this”就足够了,但创建一个列表实例在这种情况下是多余的。很抱歉@imose在使用
jQuery
方法(也称
$
)时没有得到您的支持。将创建一个
jQuery
的新实例,其中包含与您的选择器匹配的元素列表。绝对没有理由这样做,避免此类用例将是最佳实践。性能方面。您不是在具有相同类
项的每个元素中添加了不同的ID吗。如果您添加了ID,那么您还可以检查ID。所以你只需跳过点击的元素。很好的答案+1.,而且他不应该在代码中使用“break;”。这将导致循环退出。