2012-02-09 17 views
6

यदि कोई div एक निश्चित तत्व होता है तो मैं कुछ करने की कोशिश कर रहा हूं, लेकिन स्थिति को ट्रिगर नहीं कर सकता। यहाँ मेरा सबसे अच्छा शॉट है।परीक्षण करें यदि किसी div में कोई तत्व नहीं है

<div class='test'> 
    testing123 
</div> 

<div class='test'> 
    <p>testing456</p> 
</div> 

$('.test').each(function(){ 
    if(!$(this).has('p')) { 
     $(this).addClass('red'); 
    } 
}); 

स्क्रिप्ट सिर्फ पूरी तरह से लक्ष्यीकरण कर रहा है।

if($('p', $(this)).length == 0) 

$('p', $(this)) के बाद से वर्तमान अंदर p सभी तत्वों के वापस आ जाएगी: http://jsbin.com/igoyuk/edit#javascript,html,live

उत्तर

11

ध्यान रखें कि .has()jQuery लौटाता है, बुलियन नहीं!

हालांिक (चयनकर्ता) यह दिखाता है: jQuery
विवरण: उन वंशज है कि चयनकर्ता या डोम तत्व से मिलान करने वाला करने के लिए मिलान तत्वों के सेट को कम करें।

if(!$(this).has('p')) करना हमेशा सत्य है, क्योंकि jQuery हमेशा एक सेट लौटाता है, भले ही यह खाली हो!

.has() मूल रूप से सेट इस पर कहा जाता है फिल्टर है, तो आप सिर्फ यह करना है:

$("div.test:has(p)").addClass("red"); 

यह <div> तत्वों के लिए अपने डोम प्रश्नों का चयन केवल:

$('.test').has('p').addClass('red'); 
+0

यह बढ़िया है, मैं रिवर्स i.e. 'पास नहीं है' पी कैसे कर सकता हूं? धन्यवाद – SparrwHawk

+2

उदाहरण के लिए इस तरह: '$ ('। परीक्षण: नहीं (: है (पी))')' –

+0

शानदार, आपको वोट मिला क्योंकि आपने समझाया कि यह क्यों काम नहीं करता :-) धन्यवाद! – SparrwHawk

3
if (!($(this).find('p').length > 0)) { 
    $(this).addClass('red'); 
} 
0

आपको कोई ऐसा तत्व प्रकार के अभाव के लिए जाँच करने के लिए निम्न स्थिति इस्तेमाल कर सकते हैं - यहाँ एक लाइव बेला है तत्व।

2

निम्नलिखित उपयोग करने पर विचार परीक्षण कक्षा के साथ और फिर यह देखने के लिए लग रहा है कि उसके पास <p/> तत्व है या नहीं। यह थोड़ा और terse = तार पर जा रहे कम बाइट्स।

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