2012-11-01 16 views
10

में तत्व शामिल है या नहीं, मुझे स्टैक ओवरफ़्लो पर कई संबंधित चीजें मिलीं लेकिन मेरे मामले के लिए लागू नहीं है।जांचें कि क्या jQuery में jQuery

यह सब इस उदाहरण में है, मुझे यह जांचने की ज़रूरत है कि किसी तत्व में कोई दूसरा है, और यदि हां, तो कुछ जोड़ो।

$(".bt_repondre").click(function(){ 
    comment = $(this).parent().parent().parent(); 
    //I want to check if comment containa a .comment_full element, if no, append. 
    comment.append('add'); 
}); 

आशा है कि आप मेरी मदद कर सकते हैं, मैं बहुत सी बातें की कोशिश की ...

उत्तर

12

बस .find() का उपयोग करें और इस तरह से करता है, तो रिटर्न एक तत्व की जांच,:

$(".bt_repondre").click(function(){ 
    comment = $(this).parent().parent().parent(); 
    if (! comment.find('.comment_full').length) { 
     comment.append('add'); 
    } 
}); 
+1

@ जीन-फ्रैंकोइस आपको वास्तव में ब्लेंडर का जवाब देखना चाहिए! यह – ksoo

+0

पीएस से थोड़ा अधिक संक्षिप्त है: '.parent()। Parent()। Parent() 'का उपयोग न करें। '.closest ("।कुछ चयनकर्ता ")' –

23

आप .has उपयोग कर सकते हैं और .length:

if (comment.has('.comment_full').length) { 
    // It has that element 
} 
  • .find सभी वंशजों पर फिर से शुरू होगा, लेकिन .has चयनकर्ता से मेल खाने वाले वंशज के बाद बंद हो जाएगा। यह तेजी से चल सकता है।

  • .length बस यह देखने के लिए जांचता है कि तत्वों के परिणामी सेट की लंबाई गैर-शून्य है या नहीं।

0

इस

comment.has('a.comment_full').length == 0 
+1

क्या यह आपको नहीं बताएगा कि क्या यह _Didn't_ में अन्य तत्व नहीं है? – ksoo

1

इन उत्तरों से अधिकांश महान हैं, लेकिन वहाँ एक new method called contains(container,contained) (1.4 में जोड़ा गया) एक Boolean रिटर्न की कोशिश करो! यह मूल रूप से ब्लेंडर के कोड स्निपेट के समान ही होता है लेकिन संभवतः टाइप करने और निष्पादित करने के लिए दोनों तेज़ होता है।

अपने कोड में लागू किया है, यह इस तरह दिखना चाहते हैं:

$(".bt_repondre").click(function(){ 
    comment = $(this).parent().parent().parent(); 
    if(!$.contains(comment, $('.comment_full')))//same as if(!jQuery.contains(... 
    { 
     comment.append('add'); 
    } 
}); 
7

इन उत्तरों से अधिकांश गलत हैं। आप $ DOM नोड को $ jQuery के लिए एक jQuery तत्व नहीं पास करना चाहिए। https://api.jquery.com/jQuery.contains/ प्रति ठीक से काम करने के लिए शामिल है।

उदाहरण के लिए, यह निर्धारित करेगा कि आप $('#a') में $('#b) शामिल हैं या नहीं।

HTML:

<div id="a"> 
    <div id="b"></div> 
</div> 

जावास्क्रिप्ट:

var $a = $('#a'); 
var $b = $('#b'); 
var contains = $.contains($a.get(0), $b.get(0)); 
console.log('contains', contains); 
// outputs `true` 
1

आप के mytable की आईडी आप निम्नलिखित कोड का उपयोग कर सकते के साथ तालिका के अंदर किसी भी टीआर तत्व मान लीजिए देख रहे थे तो :

if($('#productsTableBody tr').length) 
{ 
//... 
} 

इस तरह हम wheather तालिका को किसी भी पंक्ति में जांच सकते हैं।

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