2009-09-21 42 views

回答

2

你可以連續使用一些事件使用jQuery's one function這樣的:

$('select').one('click', firstClick); 

function firstClick(evt) { 
    //do anything you might want to do 
    $(evt.target).parent().one('click', secondClick); 
} 

function secondClick(evt) { 
    //again, do you thing 
    $(evt.target).parent().one('click', firstClick); 
} 

one功能將執行你給一次事件處理程序,然後將其刪除。該解決方案允許您在每次點擊時切換處理程序。如果你使用這個,請小心。您還需要處理blur事件以重置第一個處理程序。

您也可以使用jQuery's live function來最小化您正在創建的事件處理程序的數量,從而節省內存。這也將避免我可以用我的第一個解決方案預見的一些問題。

$('select option').live('click', selectHandler); 

function selectHandler(evt) { 
    //insert magic here 
} 
0

如果選擇已更改,則調用onchange方法。

+0

如果用戶點擊一個第二相同的選項後,單擊我不想錯過這個情況。 – omg 2009-09-21 15:27:28

+0

我也在爲此苦苦掙扎,從我發現的東西我不知道你是否可以對它做任何事情:(雖然我會看這個問題。) – 2009-09-21 15:37:11

+0

似乎無法對此做任何事 – omg 2009-09-21 15:45:57

0

您可以隨時在組合框中的每個選項上使用onclick。它不漂亮,但它應該工作:

<select> 
    <option onclick="alert('May');">May</option> 
    <option onclick="alert('June');">June</option> 
    <option onclick="alert('July');">July</option> 
</select> 
1

皮特的回答jQuery的版本,我認爲將滿足這個問題問

$("option").click(function(){ 
    alert($(this).text()); 
}); 

編輯

由於上述不被交瀏覽器,我做了一些搜索,並在堆棧溢出中發現了一個可能有所幫助的帖子。

Fire event each time a DropDownList item is selected with jQuery

+0

這似乎不是跨瀏覽器兼容的,經過Chrome 3.0,IE6和Firefox 3.5的測試,僅適用於Firefox的Firefox瀏覽器 – 2009-09-21 17:11:44

+0

它可能是'.text()',你可能不得不嘗試'.html()' – geowa4 2009-09-21 17:13:31

+0

在IE6或Chrome 3.0中,alert函數根本不會被調用,因此將它改爲.html()mak沒有區別。 – 2009-09-21 17:27:34

相關問題