jquery - जक्वरी: पूर्वजों(या वंशजों) और स्वयं को प्राप्त करें




filter ancestor (4)

एक matchedset.find(selector) द्वारा फ़िल्टर किए गए वर्तमान मिलान सेट के वंशज / पूर्वजों को प्राप्त करने के लिए एक matchedset.find(selector) का matchedset.find(selector) कर सकते हैं। भी)। वहाँ एक बेहतर (अधिक संक्षिप्त और / या तेज) तरीका है इसे पाने के लिए

matchedset.find(selector).add(matchedset.filter(selector))

और माता-पिता के लिए संबंधित ()?


"AndSelf ()" फ़ंक्शन देखें।


जबकि Jeoff का समाधान अच्छा है, कभी-कभी सभी तत्वों को पुनरावृत्त करने में सक्षम होना अच्छा होता है, जिसमें चयनकर्ता के बिना भी शामिल है। यह ऐड-ऑन थोड़ा अधिक लचीला है:

$.fn.all = function(selector) {
    if(selector===window.undefined) return this.find('*').andSelf();
    return this.filter(selector).add(this.find(selector));
};

माता-पिता के लिए आपके closest(selector)


मुझे लगता है कि निष्पादन के समय की दृष्टि से आपकी विधि कुशल है, लेकिन आप जो पूछ रहे हैं वह वाक्यगत शर्करा है। उसके लिए, आप इसे एक प्लगइन में लपेट सकते हैं:

  jQuery.fn.findAndSelf = function(selector) {
    return this.find(selector).add(this.filter(selector))
  }

फिर इसे इस तरह उपयोग करें:

$('.whatever').findAndSelf('.awesome')

यदि आप फैंसी प्राप्त करना चाहते हैं, तो आप एक ऐसा प्लगइन बना सकते हैं जो न केवल 'खोजने' के लिए बल्कि 'माता-पिता' और 'बच्चों' और अन्य चयनकर्ता-आधारित प्लगइन्स के लिए काम करता है:

  jQuery.fn.withSelf = function(plugin, selector) {
    return this[plugin](selector).add(this.filter(selector))
  }

फिर आप पहले तर्क के रूप में आपूर्ति करेंगे जिसे ट्रैवर्सल प्लगइन आप कॉल करना चाहते हैं:

$('.whatever').withSelf('find', '.awesome')
$('.whatever').withSelf('parents', '.awesome')

सिर्फ़ किक के लिए, एक और मज़ेदार प्लगइन जो आपको एक ही समय में एक से अधिक संख्या में ट्रैवर्सल प्लग इन को कॉल करने देता है:

  jQuery.fn.traverse = function(plugins, selector) {
    var set = new jQuery();
    $.each(plugins, function(i, val) {
      set.add(this[val](selector));
    }
    return set
  }

आप इसे चयनकर्ता-आधारित प्लगइन्स के किसी भी संयोजन के साथ इस तरह से लागू कर सकते हैं:

$('.whatever').traverse(['find','filter'], '.awesome')
$('.whatever').traverse(['parents','find'], '.awesome')
$('.whatever').traverse(['parents', 'filter'], '.awesome')




descendant