如何在循环中取消元素的设置。

3
如果满足特定条件,我该如何从“elems”数组中取消设置当前元素?
var elems = $('input, select, textarea', this);

elems.each(function(){

  if($(this).attr('name') == 'something') {
    // unset `this` from elems ??
  }

});

我对此进行了console.log,但并没有显示出任何键...


好的,我的意思是从数组中删除它,就像在 PHP 中取消设置一样 :) - Alex
3个回答

6
你应该在初始选择器内完成这个操作:
var elems = $('input, select, textarea', this).not('[name="something"]'); 

@Alex GIGO :)。 - D'Arcy Rittich

5
你可以使用filter()函数,该函数构造一个新的jQuery对象,其中包含从谓词函数返回true的元素。
var elems = $('input, select, textarea', this);

elems = elems.filter(function(){

  if($(this).attr('name') == 'something') {
    return false;
  }

  return true;

});

这当然可以变成;
var elems = $('input, select, textarea', this).filter(function(){
  if($(this).attr('name') == 'something') {
    return false;
  }

  return true;
});

更多信息请参见filter()文档


1
改成 return $(this).attr('name') != 'something' 就完美了。 - gdoron

3
elems.filter(function(){
    return $(this).attr('name') !== 'something';
});

这将减少元素的集合,只留下那些name属性不是"something"的元素(换句话说:如果name属性是"something",该元素将被过滤掉)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接