/ / jQuery - गतिशील रूप से फ़िल्टर विधि सेट करें - jquery, चर, विधियों, पैरामीटर

jQuery - गतिशील रूप से फ़िल्टर विधि सेट करें - jquery, चर, विधियों, पैरामीटर

मैं कुछ कोड गठबंधन करना चाहता हूं लेकिन मुझे यकीन नहीं हैअगर मैं क्या करना चाहता हूं तो संभव है। असल में मेरे पास एक / फ़ंक्शन के समूह के साथ एक फ़ंक्शन है, और एक पंक्ति है जो सभी अलग-अलग मामलों में समान है:

$("#selector).prev(".class-selector").addClass("current");
$("#selector).next(".class-selector").addClass("current");
$("#selector).last(".class-selector").addClass("current");
$("#selector).first(".class-selector").addClass("current");

क्या कोई तरीका है कि मैं फ़िल्टर विधि सेट कर सकता हूं (prev, next, last, first) एक चर के रूप में, इसलिए मुझे अपने पूरे कार्य में इस लाइन को दोहराना नहीं है? मैंने फ़ंक्शन में पैरामीटर पास करने और विधि के रूप में एक चर का उपयोग करने का प्रयास किया:

$("#selector).variable(".class-selector").addClass("current");

लेकिन यह काम नहीं करता है। मुझे मिलता है:

ऑब्जेक्ट में कोई विधि "चर" "त्रुटि नहीं है।

मैं अस्पष्ट रूप से समझता हूं कि यह क्यों काम नहीं करता है, इस पर आधारित है कि jQuery कोड कैसे पढ़ा जाता है। क्या ऐसा करने का कोई और तरीका है?

उत्तर:

उत्तर № 1 के लिए 1

यह बहुत छोटा नहीं है, लेकिन यह निश्चित रूप से अधिक संघनित है :)

for (var i = 0, fns = ["prev", "next", "last", "first"], fn; fn = fns[i]; ++i) {
$("#selector")[fn](".class-selector").addClass("current");
}

जवाब के लिए 0 № 2
var $all = $("#selector .class-selector")
$all.eq(0).addClass("current"); //first
$all.eq(4).addClass("current"); //fifth
$all.eq($all.length-1).addClass("current"); //last

जवाब के लिए 0 № 3

आप इसे एक jquery प्लगइन के रूप में आजमा सकते हैं ...

(function( $ ){
$.fn.pnlf = function(class_selector, current) {
this.prev(class_selector).addClass(current);
this.next(class_selector).addClass(current);
this.last(class_selector).addClass(current);
this.first(class_selector).addClass(current);

return this;
};
})( jQuery );

// Use the plugin on the selected element...
$("#selector").pnlf("class-selector", "current");