我正在开发一些jQuery,但我是初学者,所以它有点臃肿而且不是很优雅。基本上,当提交两个表单中的任何一个或单击其提交按钮时,我希望cookie值无效。但是我不知道如何巩固函数的条件,所以我只需要写出一次函数,所以我能做的最好就是:
$('form#searchform-basic').submit(function() {
$.cookie('tab_cookie', null);
});
$('form#searchform-basic a.search').click(function() {
$.cookie('tab_cookie', null);
});
$('form#searchform-advanced').submit(function() {
$.cookie('tab_cookie', null);
});
$('form#searchform-advanced input#search-button-submit').click(function() {
$.cookie('tab_cookie', null);
});
必须有更好的方法,对吧?
在任何人问之前,是的,您会认为您只需要知道表单何时提交。但是忽略单击事件意味着单击提交按钮时该功能不会运行。我不知道为什么会这样,只是。
答案 0 :(得分:4)
为您的函数命名,如下所示:
function ClearCookie() {
$.cookie('tab_cookie', null);
}
这样,您可以根据需要从多个事件中调用它。
$('form#searchform-basic').submit(ClearCookie);
$('form#searchform-basic a.search').click(ClearCookie);
$('form#searchform-advanced').submit(ClearCookie);
$('form#searchform-advanced input#search-button-submit').click(ClearCookie);
瞧!
为了更进一步,您可以组合调用相同事件(提交或单击)的选择器,如下所示:
$('form#searchform-basic, form#searchform-advanced').submit(ClearCookie);
$('form#searchform-basic a.search, form#searchform-advanced input#search-button-submit').click(ClearCookie);
我可能会留下表单标签,只使用ID,但这只是我。
$('#searchform-basic, #searchform-advanced').submit(ClearCookie);
$('#searchform-basic a.search, #searchform-advanced input#search-button-submit').click(ClearCookie);
答案 1 :(得分:1)
$('oneselector','second','third').click(function() {
$.cookie('tab_cookie', null);
});
试试
答案 2 :(得分:1)
好了,因为单击提交按钮实际上提交了表单,您不需要将单击处理程序绑定到提交按钮,只需将控件绑定到表单的提交操作(这是因为单击一个提交按钮)。
要将其简化为一行,请在表单中添加一个类,例如clear-cookie
。
<form id="searchform-basic" class="clear-cookie"> ... </form>
<form id="searchform-advanced" class="clear-cookie"> ... </form>
$("form.clear-cookie").submit(function(){
$.cookie('tab_cookie', null);
});
然而,如上所述,您可以执行以下操作:
$("#searchform-basic, #searchform-advanced").submit( ... );
但我发现我通常使用类对相关元素进行分组。