2011-12-22 71 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