2011-12-22 3 views
0

Опровержение - это, вероятно, до моего недостатка знаний с помощью JQuery, но я установил следующую функцию, когда передан параметр, который пытается проверить, а затем удалить некоторые динамически добавлены поля (проверка должна остановить попытку удаления осуществляемые - если не требуется)Невозможно выполнить несколько вызовов для одной функции JQuery

jQuery.fn.clearFields = function (clearField) { 

    var clearfield_search = "#"+clearField+"_search"; 
    var clearfield_link = "#"+clearField+"_link"; 
    var clearfield_search_label = "label[for='"+clearField+"_search']"; 
    var clearfield_link_label = "label[for='"+clearField+"_link']"; 
    alert("About to Remove"); 

    if ($(clearfield_search).length > 0) { 
           //Removal of Label and Field (Attempted) 
           //removal of inital break & labels 
           $(clearfield_search_label).prev('br').remove(); 
           $(clearfield_search_label).remove(); 
           $(clearfield_link_label).prev('br').remove(); 
           $(clearfield_link_label).remove(); 
           //Removal of fields 
           $(clearfield_link).remove(); 
           $(clearfield_search).remove(); 
    } 
    alert("Removed"); 
} 

Но моя дилемма, я не могу видеть, чтобы явные (несколько вызовов) для этой функции - - такие, как

jQuery.fn.clearFields("ebsco"); 

jQuery.fn.clearfields("summon"); 

похоже только первая функция cal l выполняется - тогда больше ничего не происходит - очень расстраивает.

Должен ли я реализовывать вызовы с использованием цикла for или метода .each - или я предполагаю, что есть что-то более фундаментальное, которого я пропускаю, - или, возможно, есть еще лучший способ сделать это?

Опять любая обратная связь высоко ценится

+1

NB: Вы должны расширять 'jQuery', а не' jQuery.fn', если вы не собираетесь использовать его на селекторах, то есть как '$ (selector '). ClearFields()'. –

+2

Зачем вообще расширять JQuery? Почему бы просто не объявить это как нормальную функцию? –

ответ

0

Согласно комментарию Нейта, что-то вроде этого:

var clearField = function (clearField) { 

    var $clearfield_search = $("#"+clearField+"_search"); 
    var $clearfield_link = $("#"+clearField+"_link"); 
    var $clearfield_search_label = $("label[for='"+clearField+"_search']"); 
    var $clearfield_link_label = $("label[for='"+clearField+"_link']"); 
    alert("About to attempt remove"); 

    if ($clearfield_search.length > 0) { 
           //Removal of Label and Field (Attempted) 
           //removal of inital break & labels 
           $clearfield_search_label.prev('br').remove(); 
           $clearfield_search_label.remove(); 
           $clearfield_link_label.prev('br').remove(); 
           $clearfield_link_label.remove(); 
           //Removal of fields 
           $clearfield_link.remove(); 
           $clearfield_search.remove(); 
    } 
    alert("Remove attempt completed"); 
}; 

В дополнении к только что делает его обычную функцию, я кэшируюсь завершенная JQuery объектов, а не кэширование строк, позже используются для создания объектов jQuery. Мне лично нравится помещать знак доллара в переменные, которые являются объектами jQuery, но это только я. Вам не нужно.

+0

Большое спасибо за отзывы и советы - все, кажется, сейчас работает, очень ценится - большое спасибо! –