jQuery 1.8+ के लिए, .addBack()
का उपयोग करें:
$(this).prev().addBack().toggle();
पहले jQuery संस्करणों के लिए, पदावनत .andSelf()
कॉल का उपयोग करें (demo देखें) , मैंने सोचा कि मैं इस त्वरित प्रयोग को पेस्ट कर दूंगा जो मैंने अभी किया है, प्रश्न पढ़ने के बाद, जो भी काम करता है। यद्यपि ... यह मुझे हैरान कर दिया जब यह किया:
$('#recipient').click(
function(){
var pair = [this, this.previousElementSibling];
$(pair).toggleClass('red green');
});
JS Fiddle demo।
संयोग से, JS Perf loose comparison of the two selector approaches।
संपादित (अब तक मुझे पता है) के अनुकूल अद्यतन एक यानी जोड़ने के लिए, यद्यपि मैं वर्तमान में इसके साथ सभी ब्राउज़रों saddling कर रहा हूँ, बजाय सुविधा का पता लगाने (भी, मैं अंत में एहसास हुआ कि नीले रंग ! = हरा):
function pESibling(n){
var nPS = n.previousSibling;
if (!n || nPS === null){
return false;
}
else if (nPS.nodeType == 1){
return nPS;
}
else {
return pESibling(nPS);
}
}
var that = document.getElementById('recipient'),
pair = [that, pESibling(that)];
$(pair).toggleClass('red green');
console.log(pair);
JS Fiddle demo
वेब की खुशी! कोई गंभीरता नहीं है..! =) एक लंबी कहानी को कम करने के लिए [आईई <9 'पिछले एलीमेंट सिब्लिंग' नहीं करता है] (http://www.quirksmode.org/dom/w3c_core.html#t84)। फिर भी, पुराना, और हमेशा फैशनेबल, 'अगर' दृष्टिकोण है। =) –
मैं आपके समाधान का परीक्षण करते समय एक बेवकूफ गलती कर रहा था। हालांकि, नहीं, 'पिछली एलिमेंट सिब्लिंग' चाल नहीं करेगी, बस एक सरणी का उपयोग करेगा ... '$ ([$ (यह), $ (this.prev())] 'यह करता है! – Gary
$ (यह) .prev()। और स्वयं() टॉगल(); –