再次道歉 - 这可能是由于我对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方法来实现调用 - 或者我猜测那里有一些我缺少的基础 - 或者可能有更好的清洁工这样做的方式?
再次感谢任何反馈
答案 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对象的变量中放一个美元符号,但那只是我。你不需要。