2012-06-06 6 views
2

일부 코드를 결합하려고하지만 원하는 작업이 가능한지 잘 모르겠습니다. 기본적으로 내가/만약 다른 문장의 무리와 함께 기능을 가지고 있고, 다른 모든 경우에 걸쳐 유사하다가 한 줄이 :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

이 훨씬 짧은 아니지만, 그것은 확실히 더 응축 것 :

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

감사합니다! 이것은 제가 찾고있는 라인을 따라 맞았습니다. 그리고 여기에서 그것을 이해할 수있었습니다. 그것은 기본적으로 필요한 [fn] 구문이었습니다. – brittanystoroz

+0

@wordtoyourtom 대단합니다! 건배 ~ –

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 
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"); 
관련 문제