2010-12-01 54 views
0

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

我们有了一个更好的办法,对?

在没有人问你之前,你会认为你只需要知道何时提交表格。但忽略单击事件意味着在单击提交按钮时该函数不会运行。我不知道为什么它是这样,它只是。

回答

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); 
+0

谢谢!这几乎是完美的,除了我通过反复试验发现,用单引号和逗号分隔标识符而不是逗号不是正确的语法。另外,我希望有一种方法可以将.cl​​ick()和.submit()事件合并为一个,如“如果提交或点击发生,然后清除cookie”。 – Tom 2010-12-03 01:47:40

+0

谢谢@Tom,我修改了语法。据我所知,你不能把两个不同的事件合并成一个声明。 – Marcie 2010-12-03 17:38:30

1
$('oneselector','second','third').click(function() { 
    $.cookie('tab_cookie', null); 
}); 

尝试

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

但我发现使用类我通常组相关的元素。