2013-05-22 4 views
-1

플러그인 내 each() 루프에서 요소를 제거하고 특정 itens 만 리턴하도록합니다. 그러나 지금까지 나는 많은 테스트를했고 아이템을 제거 할 수 없습니다.jQuery Plugin 각 루프에서 요소 제거

(function($){ 

$.fn.teste = function(parametro){ 

    var parametro_padrao = {}; 
    if (parametro){$.extend(parametro_padrao, parametro);} 

    return this.each(function(){ 

     //if certain condition happens I want to remove an element so it will not be returned in the "return" clause above 

    }); 


}; 

})(jQuery); 

편집 :

: 숨기거나 : 보이는 내가 나쁜 생각이라고 생각 그들이 오프셋 사용하지 좋은 원인이다.

얼마 후 나는 좋은 해결책을 발견하고 그래서 다른 사람들이 나에게로 시간을 허비하지 않습니다 공유 :

(function($){ 

$.fn.visivel = function(parametro){ 

    var parametro_padrao = {}; 
    if (parametro){$.extend(parametro_padrao, parametro);} 

    elemento = this; 
    this.each(

     function(index){ 

      $(this).parents().andSelf().each(

       function() { 

        if ( ($(this).css("display") == "none") || ($(this).css("visibility") == "hidden") ) { 

         delete elemento[index]; 
         return false; 

        } 

       } 

      );  

     } 

    ); 

    return elemento; 

}; 

})(jQuery); 

답변

1

사용 필터() :

return this.filter(function(){ 
     return mycondition?true:false; 
    }); 
+0

당신은 훌륭하지만 reallly 필요를 복잡한 algorythm을 사용하고 플러그인을 사용하여 특정 항목을 제거합니다. 코드를 약간 변경했지만 문제가 발생합니다. \t $ .fn.teste = function (parametro) { \t \t \t var parametro_padrao = {}; \t \t 경우 (parametro) {$ 연장 (parametro_padrao, parametro).} \t \t \t \t 이 온도 =; \t \t this.each (기능 (인덱스) { \t \t \t \t \t $ (이) .parents(). andSelf(). 각 ( \t \t \t \t \t \t \t 함수() { \t \t \t \t \t \t \t \t \t 경우 (($ (이) .CSS ("디스플레이") == "없음") || ($ (이) .CSS ("V isibility ") =="숨김 ")) { \t \t \t \t \t \t \t \t \t \t \t temp.splice (인덱스 1); \t \t \t \t \t \t // false; \t \t \t \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t} \t \t \t \t \t \t \t ); \t \t \t \t \t}); –

+0

당신이 찾고있는 것은 정확하게 .filter()가 사용되는 것입니다 : http : //api.jquery.com/filter/BTW if ($ (this) .is (': hidden')) –

+0

mycondition은 복잡한 표현식이나 함수 호출 일 수 있습니다. – Barmar