jQuery - 同一功能的多个触发器

时间:2010-12-01 23:51:14

标签: jquery forms cookies

我正在开发一些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);
});

必须有更好的方法,对吧?

在任何人问之前,是的,您会认为您只需要知道表单何时提交。但是忽略单击事件意味着单击提交按钮时该功能不会运行。我不知道为什么会这样,只是。

3 个答案:

答案 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( ... );

但我发现我通常使用类对相关元素进行分组。