无法对单个Jquery函数进行多次调用

时间:2011-12-22 17:29:44

标签: 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");

似乎只有第一个函数调用被执行 - 然后没有其他事情发生 - 非常令人沮丧。

我是否必须使用for循环或.each方法来实现调用 - 或者我猜测那里有一些我缺少的基础 - 或者可能有更好的清洁工这样做的方式?

再次感谢任何反馈

1 个答案:

答案 0 :(得分: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对象的变量中放一个美元符号,但那只是我。你不需要。