我想要结合一些代码,但我不确定我想做什么是可能的。基本上我有一个带有一堆if / else语句的函数,并且在所有不同情况下都有一行相似:
$('#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代码,模糊地理解为什么这不起作用。还有另一种方法吗?
答案 0 :(得分:1)
这不会短得多,但它肯定更加浓缩:)
for (var i = 0, fns = ['prev', 'next', 'last', 'first'], fn; fn = fns[i]; ++i) {
$('#selector')[fn]('.class-selector').addClass('current');
}
答案 1 :(得分:0)
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
答案 2 :(得分:0)
您可以尝试将其作为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");