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 */ );

基本上,我想将两个单独的/ *做一些* /部分输入到单个过滤器.一个适合那些匹配的人,一个用于其他人,而不必过滤两次.我错过了一个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相关文章