jQuery:使用filter(),但同时使用两种结果

标签 jquery filter

在 jQuery 中,filter() 将结果缩减为满足特定条件的元素。

这会将列表分为两部分。使用元素的“好的一半”很容易:

$("some selector").filter(function() {
  // determine result...
  return result;
}).each( /* do something */ );

但是我怎样才能使用我的元素的“另一半” - 但不做相当于这个:

$("some selector").filter(function() {
  // determine result...
  return !result;
}).each( /* do something else */ );

基本上,我想将两个单独的 /* do some */ 部分提供给单个过滤器。一种用于匹配的内容,另一种用于其他内容 - 无需过滤两次。我是否缺少执行此操作的 jQuery 函数?

<小时/>

附注:我想我可以这样做:

$("some selector").each(function() {
  // determine result...
  if (result)
    /* do something */
  else
    /* do something else */
});

但我希望有更好的东西。

最佳答案

Kobi以插件形式推荐的方法:

$.fn.invert = function() {
  return this.end().not(this);
};

$('.foo').filter(':visible').hide().invert().show();

请注意,invert() 不会向 jQuery 堆栈添加新元素,而是替换最后一个元素:

$('.foo').filter(':visible').invert().end(); // this will yield $('.foo'), not $('.foo:visible')

编辑:根据 Tomalak 的建议将 prevObject 更改为 end()

关于jQuery:使用filter(),但同时使用两种结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798542/

相关文章:

javascript - 如何删除跨度上的 £ 并更改值?

jquery - css 配置文件随机加载

javascript - jQuery Click anchor 标记防止页面滚动到顶部

python - 在 python 中的数据帧上使用 group by 之后,如何过滤数据帧以返回特定类型的记录?

javascript - 我可以在 jQuery 中一起使用 'not' 和 'contains' 过滤器吗

jQuery UI : datepicker - How to add close Button (Image! )在右上角?

javascript - 菜单菜单三级子菜单格式

javascript - 如何在 Vue Js 中做多个过滤器?

python - 使用字典中的键过滤 pandas DataFrame

jquery - IE 7 - 当为具有绝对位置的 DIV 设置不透明度时,它的子 div 消失