2011-12-22 50 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我執行 - 然後沒有其他事情發生 - 非常令人沮喪。

我是否必須使用for循環或.each方法來實現調用 - 或者我猜這裏面有一些更重要的東西我錯過了 - 或者有更好的方法可以做到這一點?

再次任何反饋非常讚賞

+1

注意:如果你不打算在選擇器上使用它,比如'$(selector')。clearFields()',你應該擴展'jQuery',而不是'jQuery.fn'。 – 2011-12-22 17:33:04

+2

爲什麼要擴展JQuery?爲什麼不只是聲明這是一個正常的功能? – 2011-12-22 17:35:27

回答

0

按Nate的評論,這樣的事情:

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

非常感謝所有的反饋意見和建議 - 所有人現在都在工作 - 非常感謝 - 非常感謝! – 2011-12-23 10:22:22