2016-09-04 5 views
8

मैं आइटम, कि दो महत्वपूर्ण डेटा होते हैं की एक सूची फ़िल्टर करने के लिए जिम्मेदार बताते हैं:मिश्रण तार्किक AND और OR jQuery चयनकर्ता में

<li class="song" data-title="freedom" data-id="7" data-tags="tag-18-eot,tag-2-eot" data-category="1">Freedom</li> 
  1. श्रेणी
  2. टैग

छनन श्रेणी के द्वारा तार्किक द्वारा होना चाहिए या टैग द्वारा फ़िल्टरिंग तार्किक और होना चाहिए।

इन दोनों में से किसी एक का उपयोग करके फ़िल्टरिंग कोई समस्या नहीं है।

मैं लागू किया, उदाहरण के लिए:

$(collection).filter('li[data-tags*="tag-50-eot"][data-tags*="tag-51-eot"]'); 

टैग द्वारा फिल्टर करने के लिए। या:

$(collection).filter('[data-category="1"], [data-category="2"]); 

श्रेणी के आधार पर फ़िल्टर करने के लिए।

यह ठीक काम करता है। हालांकि, मुझे इन दो चयनकर्ताओं को एक ही प्रश्न में गठबंधन करने का कोई तरीका नहीं मिला कि मैं filter() फ़ंक्शन पर जा सकता हूं, और दो filter() कॉलों को चेन करना वांछित परिणाम नहीं लेता है, क्योंकि पहला कॉल आइटम को फ़िल्टर कर सकता है कॉल पीछे छोड़ देंगे।

मुझे इसी तरह के विषय के साथ this question मिला, लेकिन समस्या थोड़ी अलग और दृष्टिकोण भी है।

मैं उन वस्तुओं को सही ढंग से कैसे फ़िल्टर कर सकता हूं?

+1

है तो आप बस के साथ और पहले चेनिंग की कोशिश की? –

+0

_ फ़िल्टरिंग दो फ़िल्टर() कॉल वांछित परिणाम नहीं लेते हैं, क्योंकि पहली कॉल उन आइटम्स को फ़िल्टर कर सकती है जो दूसरी कॉल पीछे छोड़ेंगी ._ आपको ऐसा क्या लगता है? – hindmost

+0

निश्चित नहीं है कि परिणाम क्या अपेक्षित है? उन सभी तत्वों को वापस लौटाएं जिनके पास 'डेटा-टैग' और' डेटा-श्रेणी 'विशेषताएँ सेट हैं? – guest271314

उत्तर

6

जब तक आप पहले AND स्थिति का उपयोग करते हैं, तब तक आप जो भी खोज रहे हैं उसे प्राप्त करने में सक्षम होना चाहिए। उदाहरण के लिए:

var res = $('#collection li') 
    .filter('li[data-tags*="tag-50-eot"][data-tags*="tag-51-eot"]') 
    .filter('[data-category="1"], [data-category="2"]'); 

फिल्ड here

-2

फिल्टर समारोह इनपुट के रूप में एक समारोह प्राप्त कर सकते हैं ...

आप एक निर्माण की तरह अंत हो सकता है:

var set = $(collection).filter(
function(index, element) 
{ 
    return ($(element).attr(...) == "..."); 
} 
); 
+0

मुझे डाउनवोट नहीं मिलता है ... मुझे लगता है कि साइट का उद्देश्य लोगों को सही दिशा में इंगित करना है, न कि उनके लिए अपना काम करना। –

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