2013-05-22 2 views
-1

Я хочу удалить и элемент из цикла each() внутри плагина, поэтому я верну только некоторые конкретные иены. Но пока я сделал много тестов, и я все еще не могу удалить элемент.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); 

EDIT:

: скрытый или: видимый не хорошо, потому что они используют смещение, которое я считаю, это плохая идея.

Через некоторое время я нашел отличное решение, и я поделюсь, так что другие не будут терять время, как я:

(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 нужно для удаления конкретного элемента с использованием сложного алгоритма и с использованием плагина. Я сделал несколько изменений в коде, но будет иметь проблемы: \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 // return 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

Смежные вопросы