jQuery का उपयोग और या ऑपरेटरों का उपयोग कर विशेषता द्वारा चयन करें


105

मैं सोच रहा हूँ, अगर यह संभव है कि jQuery में तत्वों का चयन करके AND और OR का उपयोग किया जाए।

उदाहरण:

<div myid="1" myc="blue">1</div>
<div myid="2" myc="blue">2</div>
<div myid="3" myc="blue">3</div>
<div myid="4">4</div>

मैं उन सभी तत्वों का चयन करना चाहूँगा जहाँ myc="blue"केवल myid1 या 3 के सेट वाले लोग ।

इसलिए मैंने कोशिश की:

a=$('[myc="blue"] [myid="1"]  [myid="3"]');

लेकिन यह काम नहीं करता है, यहाँ भी:

a=$('[myc="blue"] && [myid="1"] || [myid="3"]');

क्या यह विशेष फिल्टर फ़ंक्शन लिखने के बिना संभव है?


7
NB: आप की तरह mycऔर अपनी विशेषताओं को नहीं बनाना चाहिए myid। यदि आप एचटीएमएल 5 का उपयोग कर रहे हैं, तो उनके साथ उपसर्ग करें data-: data-mycऔर data-myid
RoToRa

@RoToRa, एचटीएमएल 5 में प्रलेखन है जो कहता है कि आपको ऐसा करना चाहिए? ज्यादातर वेबसाइटें मैं देखती हूं कि उस समय के बारे में डेवलपर का दिमाग जो भी सोचता है ...
एलेक्सिस विलके

1
सिर्फ इसलिए कि लोग ऐसा करते हैं, इसका मतलब यह नहीं है कि यह सही है। एचटीएमएल 5 धारा 3.2.1 देखें : "लेखकों को उन तत्वों, विशेषताओं या विशेषता मानों का उपयोग नहीं करना चाहिए जिन्हें इस विनिर्देश या अन्य लागू विनिर्देशों द्वारा अनुमति नहीं है, क्योंकि ऐसा करने से भविष्य में भाषा को बढ़ाया जाना काफी कठिन हो जाता है।"
RoToRa

1
यह एक अच्छे प्रश्न का एक खराब उदाहरण है। इनपुट जैसे विभिन्न तत्व प्रकारों के बारे में क्या?
जीसस_फोर्स हैरिस

जवाबों:


193

और ऑपरेशन

a=$('[myc="blue"][myid="1"][myid="3"]');

या ऑपरेशन, कॉमा का उपयोग करें

a=$('[myc="blue"],[myid="1"],[myid="3"]');

जैसा @Vega ने टिप्पणी की:

a=$('[myc="blue"][myid="1"],[myc="blue"][myid="3"]');

1
मुझे लगता है, वह चाहता हैmyc == blue && (id == 1 || id == 3)
सेल्वकुमार अरुमुगम

2
अगर मैं इसका इस्तेमाल a=$('[myc="blue"] [myid="1"],[myid="3"]');करता हूं तो इसका मतलब है ([myc="blue"] AND [myid="1"]) OR [myid="3"]या ([myc="blue"]) AND ([myid="1"] OR [myid="3"])मैं दूसरे की तलाश कर रहा हूं // संपादित करें: उस अपडेट के लिए धन्यवाद! :-)
बंड्र

18

सरल चयन .filter() [डॉक्स] (और) कई चयनकर्ता [डॉक्स] (ओआर) का उपयोग करते हुए :

$('[myc="blue"]').filter('[myid="1"],[myid="2"]');

सामान्य तौर पर, चयनकर्ताओं का पीछा करना, जैसे a.foo.bar[attr=value] कि किसी प्रकार का AND चयनकर्ता होता है।

jQuery के पास समर्थित चयनकर्ताओं के बारे में व्यापक दस्तावेज हैं, यह पढ़ने लायक है।


क्या आप जानते हैं, अगर यह gabe के उत्तर से तेज है?
बंड्र

मुझे नहीं पता, हो सकता है, शायद नहीं।
फेलिक्स क्लिंग

10

कैसे नीचे एक फिल्टर लिखने के बारे में,

$('[myc="blue"]').filter(function () {
   return (this.id == '1' || this.id == '3');
});

संपादित करें: @Jack धन्यवाद .. पूरी तरह से याद किया ..

$('[myc="blue"]').filter(function() {
   var myId = $(this).attr('myid');   
   return (myId == '1' || myId == '3');
});

डेमो


5

चयनकर्ता में ऑपरेटर केवल एक रिक्त स्ट्रिंग है, और ऑपरेटर ऑपरेटर अल्पविराम है।

हालाँकि, कोई समूह या प्राथमिकता नहीं है, इसलिए आपको किसी एक शर्त को दोहराना होगा:

a=$('[myc=blue][myid="1"],[myc=blue][myid="3"]');

क्या आपको उन उद्धरणों की आवश्यकता है? मेरा मतलब सिर्फ स्थिरता के लिए है .. शायद सिर्फ मैं। >। <
सेल्वकुमार अरुमुगम

1
@Vega: जैसे सरल स्ट्रिंग्स के लिए आपको उद्धरण चिह्नों की आवश्यकता नहीं है blue, लेकिन मैं संख्यात्मक मानों के बारे में निश्चित नहीं था, इसलिए मैंने उन्हें रखा।
ग्यूफा

5

पहले उन स्थितियों को खोजें जो सभी स्थितियों में होती हैं, फिर विशेष परिस्थितियों को फ़िल्टर करें:

$('[myc="blue"]')
    .filter('[myid="1"],[myid="3"]');

1

आपके विशेष मामले में यह होगा

a=$('[myc="blue"][myid="1"],[myc="blue"][myid="3"]');

0

JQuery तत्वों का चयन करने के लिए CSS चयनकर्ताओं का उपयोग करता है, इसलिए आपको केवल कॉमा के साथ अलग करके एक से अधिक नियमों का उपयोग करने की आवश्यकता है, जैसे:

a=$('[myc="blue"], [myid="1"], [myid="3"]');

संपादित करें:

क्षमा करें, आप नीले और 1 या 3 चाहते थे। कैसे:

a=$('[myc="blue"][myid="1"],  [myid="3"]');

दो विशेषता चयनकर्ताओं को एक साथ रखना आपको देता है और, अल्पविराम का उपयोग करके आपको देता है OR।


1
मुझे लगता है, वह चाहता हैmyc == blue && (id == 1 || id == 3)
सेल्वकुमार अरुमुगम

आपको [myc="blue"]दूसरे उदाहरण में चयनकर्ता को दोहराना होगा ।
RoToRa

-1

ठीक से तार्किक आपरेशनों का उपयोग कर कि आप बताए गए गए तत्वों का चयन करने के लिए, तुम सिर्फ जरूरत jQuery.filter()के लिए ANDआपरेशन, नहीं "विशेष फिल्टर कार्यों"। तुम भी जरूरत jQuery.add()के लिए ORआपरेशन।

var elements = $('[myc="blue"]').filter('[myid="1"').add('[myid="3"');

वैकल्पिक रूप से, एक एकल चयनकर्ता में शॉर्टहैंड का उपयोग करना संभव है, जहां चयनकर्ताओं को एक साथ जाम करना एक के रूप में कार्य करता है AND और कॉमा के साथ अलग होकर एक के रूप में कार्य करते हैं OR:

var elements = $('[myc="blue"][myid="1"], [myid="3"]');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.