我正在寻找一种较短的书写方式:

$('div')
.filter(function(value) {
   return runMyTestFunction(value);
})
.hide()
.end()
.filter(function(value) {
   return !runMyTestFunction(value);
})
.show();

希望可以遵循以下方式:
$('div')
.filter(function(value) {
   return runMyTestFunction(value);
})
.hide()
.end()
.remove(theLastWrappedSetPoppedOfftheJqueryStack)
.show();

我想将'runMyTestFunction'内联定义为lambda,因为我认为它将使代码更清晰,但按照书面要求,我必须将其复制。

最佳答案

您可以这样做:

$('div')
.filter(runMyTestFunction);
.hide()
.end()
.not(runMyTestFunction)
.show();

如果您不想两次运行该方法:
$('div')
.hide() // hide all
.not(runMyTestFunction)
.show();

或者,如果您明确希望仅隐藏某些元素,请执行以下操作:
var elements = $('div');
var toRemove = elements.filter(runMyTestFunction).hide();
elements.not(toRemove).show();

关于jQuery过滤器和反向过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6238178/

10-09 13:05