在循环jquery中过滤$(this)元素

时间:2014-06-13 11:39:24

标签: javascript jquery

我正在尝试对除$(this)

之外的其他元素执行操作
$('.items').click(function(){

    var myitem = $(this);

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

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

    });
});

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

出了什么问题?

使用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的not方法从新创建的实例中排除元素

答案 2 :(得分:0)

使用.not()来避免

试试这个

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


});

OR

根据您的代码

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


});

答案 3 :(得分:0)

您可以使用not()忽略点击的元素:

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

});