2011-06-04 13 views
5

मैं लेखन के एक छोटे रास्ते की तलाश में हूँ:jQuery फ़िल्टर और रिवर्स फ़िल्टर

$('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' इनलाइन एक लैम्ब्डा के रूप में मुझे लगता है कि यह कोड को स्पष्ट कर देगा लेकिन लिखित रूप में मुझे इसे डुप्लिकेट करना होगा।

उत्तर

9

आप कर सकता है:

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

आप विधि दो बार चलाने के लिए नहीं करना चाहते हैं:

var elements = $('div'); 
var toRemove = elements.filter(runMyTestFunction).hide(); 
elements.not(toRemove).show(); 
:

$('div') 
.hide() // hide all 
.not(runMyTestFunction) 
.show(); 

या आप स्पष्ट रूप से केवल कुछ तत्वों को छिपाने के लिए चाहते हैं, तो

+0

मुझे वह तीसरा विकल्प सबसे अच्छा लगता है। पहला वाला अभी भी मुझे बिना किसी प्रतिकृति के फ़ंक्शन को रेखांकित करने देता है। दूसरा व्यक्ति संभावित रूप से छुपाकर तत्वों को छुपाकर कुछ झिलमिलाहट पैदा कर सकता है - शायद नहीं, लेकिन मैं इसके बजाय इसे टालना चाहता हूं। –

+2

एक चर में भंडारण एक बहुत चालाक समाधान है। ठंडा! – supertrue

संबंधित मुद्दे