jQuery - 同一功能的多个触发
问题描述:
我正在开发一些jQuery,但我是一个初学者,所以它有点臃肿,不是很优雅。基本上,我希望在提交两个表单中的任何一个或单击它们的提交按钮时,cookie值将被取消。但我不知道如何整合功能的条件,使我只有一次写出来的功能,所以我能做的最好的是这样的:jQuery - 同一功能的多个触发
$('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);
});
我们有了一个更好的办法,对?
在没有人问你之前,你会认为你只需要知道何时提交表格。但忽略单击事件意味着在单击提交按钮时该函数不会运行。我不知道为什么它是这样,它只是。
答
给出函数的名称,像这样:
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);
答
$('oneselector','second','third').click(function() {
$.cookie('tab_cookie', null);
});
尝试
答
好,因为点击提交按钮实际提交表单,你不需要任何绑定一个单击处理程序提交按钮,只是你的控件绑定到表单的提交操作(这恰好为点击提交按钮的结果)。
要将其简化为一行,请在您的表单中添加一个类,例如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(...);
但我发现使用类我通常组相关的元素。
谢谢!这几乎是完美的,除了我通过反复试验发现,用单引号和逗号分隔标识符而不是逗号不是正确的语法。另外,我希望有一种方法可以将.click()和.submit()事件合并为一个,如“如果提交或点击发生,然后清除cookie”。 – Tom 2010-12-03 01:47:40
谢谢@Tom,我修改了语法。据我所知,你不能把两个不同的事件合并成一个声明。 – Marcie 2010-12-03 17:38:30