javascript - expand child ul on click of parent li -
मेरे पास निम्न संरचना है:
& lt; div class = "Downloadscontainer" & gt; & LT; ul & gt; & Lt; li & gt; स्तर 1 & lt; / li & gt; & Lt; li & gt; & lt; a href = "#" & gt; स्तर 1 & lt; / a & gt; & LT; ul & gt; & Lt; li & gt; स्तर 2 & lt; / li & gt; & Lt; li & gt; स्तर 2 & lt; / li & gt; & Lt; li & gt; & lt; a href = "#" & gt; कुछ पृष्ठ & lt; / a & gt; & LT; ul & gt; & Lt; li & gt; स्तर 2 & lt; / li & gt; & Lt; li & gt; स्तर 2 & lt; / li & gt; & Lt; / ul & gt; & Lt; / li & gt; & Lt; / ul & gt; & Lt; / li & gt; & Lt; / ul & gt; >
। (कार्य () ($ (".containerer ul li ul")। सीएसएस ("प्रदर्शन", "कोई नहीं"); $ (".contentscontainer li")। प्रत्येक (फ़ंक्शन () {$ (this)। क्लिक करें (फ़ंक्शन () (यदि ($ (यह)। बच्चे ('उल')। लंबाई & gt; 0) {$ ('। Downloadcontainer li ul')। टॉगल ();}}})}};});
इसलिए यदि मैं लेवल 1 LI
पर क्लिक करता हूं तो यह ul
प्रदर्शित करता है और फिर अगर मैं लेवल 2 पर क्लिक करता हूं LI < / कोड> जिसमें
ul
भी है, साथ ही यह ul
स्तर 1 LI
को बंद करता है; मैं यह चाहूंगा कि बच्चे को ul
खोलना चाहिए मैं यह कार्यक्षमता कैसे प्राप्त करूं?
<पूर्व>
$ (" डाउनलोड कंटैनेर ली ")। क्लिक करें (फ़ंक्शन (ई) {ई.स्टॉपप्रोगैक्शन (); $ (यह)। बच्चे ('उल')। टॉगल ();});
नोट्स:
- jQuery में कई तत्वों को हेन्डलर्स संलग्न करने के लिए आपको
प्रत्येक
की आवश्यकता नहीं है। < Li> आपको बस DOM - के रूप में
@ जॉर्ज
सुझाव देते हैं कि आप लंगर क्लिक से बेहतर संलग्न हो सकते हैं।
लंगर दृष्टिकोण लेना मैं निम्नलिखित सुझाव देता हूं कि DOM-friendly friendly :
$ (" डाउनलोडकॉन्टेनर एक ")। क्लिक करें (फ़ंक्शन (ई) {e.preventDefault (); $ (this) .closest ('ली')। बच्चों ('उल')। टॉगल ();});
नोट:
- एंकर को क्लिक करने के लिए सबसे निकटतम
LI
मिलता है, फिर बच्चेul
s (अगले
के माध्यम से नेविगेट करने के बजाय, जो एक ज्ञात व्यवस्था की आवश्यकता होती है। -
preventDefault
को रिक्त बुकमार्क लिंक (href रोकेंगे) = "#" अपने उदाहरण में) पृष्ठ के शीर्ष पर स्क्रॉल करने से.यदि वे पूर्ण लिंक थे, तो वे उन्हें नेविगेट करना बंद कर देंगे, इसलिए आपको एक अतिरिक्त जांच की आवश्यकता हो सकती है यदि आप पृष्ठ लिंक जोड़ते हैं। < / Ul>
उदाहरण के लिए आप यह जांच सकते हैं कि लिंक एक रिक्त बुकमार्क है और अन्य लिंक को सामान्य रूप से आग लगाना है:
$ (".containscontainer") .click (function (e) {if ($ (this) .attr ("href") == '#') {e.preventDefault (); $ (this) .closest ('li')। बच्चों ('ul ')।) ();}});
इस बेला को Google के लिए एक बाहरी लिंक है, साथ ही साथ
/>#
लिंक।
Comments
Post a Comment