2011-09-09 11 views
9

जावास्क्रिप्ट में कोई विवरण तत्व खोला या बंद होने पर मैं कैसे पता लगा सकता हूं? क्लिक फ़ंक्शन में श्रोता को जोड़ने और जांचने के अलावा कि खुली विशेषता सेट है या नहीं।विवरण तत्व खोलने या बंद करने का पता लगाने

+0

क्या यो क्या आपको कभी इसका समाधान मिल रहा है? – Bryce

उत्तर

-4

आप कुछ इस तरह कर सकते हैं:

<details id="element"> 
    <p>Details</p> 
</details> 

<script> 
    var isOpen = ($("#element").attr("open") == "open"); 

    alert ("Open = " + isOpen); 
</script> 
+0

मैं ऐसी घटना की तलाश में हूं जो राज्य को खुले से बंद या इसके विपरीत बदलता है जब आग लगती है। – rolisz

+1

क्या कोई कारण है कि आप ऑनक्लिक ईवेंट का उपयोग नहीं कर सकते हैं? आप हमेशा 'DOMAttrModified' ईवेंट पर बाध्यकारी कोशिश कर सकते हैं। किसी भी मामले में, 'विवरण' तत्व इतना नया है और कई ब्राउज़रों द्वारा समर्थित नहीं है, इसलिए यह कहना मुश्किल है कि यह सड़क पर काम करने के तरीके को कैसे समाप्त कर देगा। –

+1

ठीक है, अगर मैं ऑनक्लिक घटना का उपयोग कर रहा हूं, तो मैं विवरण और सारांश के बजाय दो div का उपयोग कर सकता हूं। यह jQuery की केवल दो अतिरिक्त लाइनें हैं और मुझे क्रॉस-ब्राउज़र संगतता के बारे में चिंता करने की ज़रूरत नहीं है। मुझे DOMAttrModified के बारे में पता नहीं था, लेकिन मुझे नहीं लगता कि यह क्रोम में काम कर रहा है, और विस्तार तत्व क्रोम को छोड़कर कहीं और काम नहीं कर रहा है :)) – rolisz

5

आप उपयोग कर सकते हैं toggle event:

var details = document.querySelector("details") 
 

 
details.addEventListener("toggle", function() { 
 
details.firstChild.textContent = "done" 
 
})
<!doctype html> 
 
<details> 
 
<summary>toggle event</summary> 
 
</details>

+1

यह जानना अच्छा है कि टॉगल ईवेंट बबल (?) प्रतीत नहीं होता है, और 'ओपन' विशेषता को ईवेंट की आग से पहले * संशोधित किया जा रहा है। – commonpike

0

Jquery

पर
$("#detail-id").on("toggle", function() { 
    //code 
}); 
संबंधित मुद्दे