2013-07-19 9 views
5

साथ काम करने के मेरे सवाल http://api.jquery.com/event.target/#example-1बच्चों

के लिए संदर्भित आप <li> या अन्य टैग में एक अवधि का उपयोग करते हैं इस तरह के <b> के रूप में शैली बदलने के लिए के रूप में मैं here किया है JQuery event.target का उपयोग करना, का वह हिस्सा तत्व JQuery फ़ंक्शन को अपने बच्चों को टॉगल करने के लिए ट्रिगर नहीं करेगा। यह काम करने के बारे में कोई कैसे जा सकता है?

HTML:

<ul> 
    <li><b>This doesn't work,</b> this does 
    <ul> 
     <li>sub item 1-a</li> 
     <li>sub item 1-b</li> 
    </ul> 
    </li> 
    <li>item 2 
    <ul> 
     <li>sub item 2-a</li> 
     <li>sub item 2-b</li> 
    </ul> 
    </li> 
</ul> 

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

function handler(event) { 
    var $target = $(event.target); 
    if($target.is("li")) { 
    $target.children("ul").toggle(); 
    } 
} 
$("ul").click(handler).find("ul").hide(); 

उत्तर

10

अपने वर्तमान प्रपत्र का उपयोग कर रखने के लिए, मैं closest() उपयोग करने का सुझाव चाहते हैं:

function handler(event) { 
    $(event.target).closest('li').children("ul").toggle(); 
} 
$("ul").click(handler).find("ul").hide(); 

JS Fiddle demo

हालांकि अपने खुद के इस्तेमाल के लिए मैं पसंद करेंगे:

$('li').on('click', function(e){ 
    e.stopPropagation(); 
    $(this).find('ul').toggle(); 
}); 

JS Fiddle demo

संदर्भ:

+0

धन्यवाद! अद्भुत काम करता है। – SteveC

+0

आपका स्वागत है वास्तव में, और मुझे मदद की खुशी है! =) –

+0

बहुत बढ़िया, डेविड! दूसरा एक अच्छा और सरल समाधान। और बेवकूफ के लिए धन्यवाद! – Garavani

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