2015-06-02 5 views
7

मैं बूटस्ट्रैप 3.3.4 .:बूटस्ट्रैप पतन घटना में क्लिक किए गए तत्व को कैसे प्राप्त करें?

$('.collapse').on('show.bs.collapse', function (e) { 
    // Get clicked element that initiated the collapse... 
}); 

मैं इस जरूरत का उपयोग कर पतन घटना में क्लिक किए गए एंकर तत्व को खोजने के लिए है क्योंकि मैं टूट को रोकने के लिए है, तो क्लिक किए गए तत्व एक निश्चित डेटा विशेषता है चाहें परेशानी हो रही हूँ । एक और विकल्प .on('click', function()) का उपयोग करके हुक करना होगा, हालांकि अन्य घटनाएं होती हैं जो क्लिक करने की आवश्यकता होती है, इसलिए ऐसा लगता है कि यह मेरे लिए नहीं है। निकटतम एंकर के लिए डीओएम में खोजना या ऐसा कुछ भी काम नहीं करेगा क्योंकि एक दूसरे के बगल में कई एंकर हैं।

+0

खेद है। – AmmarCSE

+0

** http: //jsfiddle.net/sheshu036/8s0mn0f4/5/** इस तरह से आपके पास एकाधिक एंकर टैग है? – sheshadri

+0

एंकरों को पृष्ठ पर कहीं और रखा जाता है, सभी एक दूसरे के बगल में (डिफ़ॉल्ट बूस्ट्रैप एचटीएमएल संरचना को अनदेखा करते हैं)। – Propaganistas

उत्तर

4

के बाद से मेरे मामले कई एंकर विशेष रुप से eachother के बगल में (अर्थात नियमित बूटस्ट्रैप संरचना अनदेखी।), मैं गिर div की आईडी का उपयोग करके क्लिक किए गए लंगर के लिए खोज समाप्त हो गया:

$('.collapse').on('show.bs.collapse', function (e) { 
    // Get clicked element that initiated the collapse... 
    clicked = $(document).find("[href='#" + $(e.target).attr('id') + "']") 
}); 
+0

का उपयोग न करें अगर यह क्लास – redrobot

2

इस काम करना चाहिए: http://jsfiddle.net/8s0mn0f4/3/

console.log($(e.target).siblings('.panel-heading').find('a')) 
+0

एक दूसरे के बगल में कई एंकर हैं। मुझे केवल क्लिक किए गए एक की जरूरत है। – Propaganistas

+1

तो शायद लिंक पर अपना स्वयं का क्लिक श्रोता लिखें और बूटस्ट्रैप एपीआई –

0

यह समाधान सभी पतन एंकरों और href लक्ष्य के लिए खोजों को रोक देता है। यह #id और byclass द्वारा दोनों संदर्भों के लिए काम करेगा।

इस उदाहरण में मैं इसे क्लिक किए गए तत्व में ध्वस्त वर्ग जोड़ने के लिए उपयोग करता हूं।

$(document).ready(function() { 
     checkCollapsed(); 
    }) 

    function checkCollapsed() { 
     $('.collapse').on('shown.bs.collapse', function (e) { 
      triggerCollapsedClass(); 
     }).on('hidden.bs.collapse', function (e) { 
      triggerCollapsedClass(); 
     }); 
    } 

    function triggerCollapsedClass() { 
     $("[data-toggle=collapse]").each(function (i, item) { 
      var selector = $(item).attr("href"); 
      if ($(selector).hasClass("in")) { 
       $(item).addClass("collapsed"); 
      } else { 
       $(item).removeClass("collapsed"); 
      } 
     }) 
    } 
7

इस

$element.on('shown.bs.collapse', function(e) { 
    var $clickedBtn = $(e.target).data('bs.collapse').$trigger; 
}); 
+1

के रूप में सेट किया गया है तो यह काम नहीं करेगा यह सही जवाब है, और इससे कोई फर्क नहीं पड़ता कि दस्तावेज़ कैसे है संरचित। –

+1

यह केवल 'show.bs.collapse' ईवेंट के लिए काम करता है। 'Show.bs.collapse' के लिए नहीं, क्योंकि उस समय डेटा सेट नहीं है। – dtrunk

0

जब बूटस्ट्रैप के पतन की आग की कोशिश करो, और एक div तत्व दिखाया गया है यह वर्ग panel-collapse collapse in हो जाता है।

मुझे इसकी आवश्यकता है ताकि मैं नए खुले पैनल में सामग्री को अजाक्स कर सकूं। आप उस तत्व में एक आईडी या डेटा-विशेषता जोड़ सकते हैं जो एंकर की पहचान करने में मदद कर सकता है।

एचटीएमएल

<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-X" aria-expanded="true" aria-controls="accordion-x" id="accordionanchor-X"> 
Information X 
</a> 
… 
<div id="collapse-x" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="pageheading-X"> 
    <div class="panel-body"> 
    … 
    </div> 
</div> 

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

$('.collapse').on("shown.bs.collapse", function (e) { 
    var clicked = $(".panel-collapse.collapse.in").attr("id"); 
    alert("collapse " + clicked); 
}); 
संबंधित मुद्दे