<li>
चुनें तत्व :has
और :not
चयनकर्ता का उपयोग करके कोई <a>
बच्चा है कि:
$("li:not(:has(a))").addClass("current");
jsFiddle
- EDIT -
हालांकि यह सबसे छोटा समाधान हो सकता है, पठनीयता एक तरफ है, यह निश्चित रूप से गति के संबंध में सबसे अच्छा नहीं है।
इस बात को ध्यान में रखते हुए, मैं सुझाव दूंगा कि आप द्वारा प्रदान किए गए एक महान answer देखें।
इस के बाद से, आप कुछ (या कोई अन्य मेरे सहित किसी को भी) एक बार से अधिक का उपयोग करते हुए अंत में हो सकता है मैं इस प्लगइन/विधि आप क्रम में DRY करने के लिए अपने कोड का उपयोग कर सकते के साथ jQuery थोड़ा विस्तार किया है:
jQuery.fn.thatHasNo = function(element, method) {
if (typeof method === "undefined" || method === null) method = "children";
return this.not(function() {
return $(this)[method](element).length;
});
};
जो तुम फोन कर सकते हैं साथ:
$("li").thatHasNo("a").addClass("current");
इस विस्तार, डिफ़ॉल्ट रूप से (यदि विधि के लिए दूसरा तर्क पारित नहीं किया जाता है), अगर कोई प्रत्यक्ष सन्तान (children) है कि मैच प्रदान की चयनकर्ता रहे हैं की जाँच करेगा। हालांकि, आप विधि के लिए दूसरे तर्क के रूप में tree-traversal parameter प्रदान कर सकते हैं। तो, यह निम्नलिखित में से किसी के रूप में लिखा जा सकता है:
$("li").thatHasNo("a", "children").addClass("current");
//...
$("li").thatHasNo("a", "find").addClass("current");
//...
$("li").thatHasNo(".class", "siblings").addClass("lame");
मैं jsFiddle अद्यतन किया है कि प्रतिबिंबित करने के लिए।
यह केवल तभी काम करेगा जब 'ली' में कोई बाल तत्व नहीं है। मेरा मतलब है, ओपी केवल उन लोगों को चाहता था जिनके पास कोई बच्चा नहीं है। – kapa