2010-12-01 85 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(...); 

但我發現使用類我通常組相關的元素。