2011-05-26 31 views
0

我有一個多選框,並且有一些與它相關的動作,當選擇改變時等等。這一切工作正常,但以正常的方式工作,但是,我使用jQuery的小部件,使選擇更加用戶友好。所以它克隆了原始選擇的數據,然後隱藏它。當不用鼠標選擇時,Jquery改變()

如果我取消隱藏,我發現小部件中的動作被複制到原始部件中,這很好。但是,我的行爲與select()上的change()關聯不再起作用。 我檢查了jquery的文檔,它說:

當元素值發生變化時,change事件被髮送到元素。此事件僅限於元素,框和元素。對於選擇框,複選框和單選按鈕,當用戶使用鼠標進行選擇時,會立即觸發事件,但對於其他元素類型,事件將被推遲直到元素失去焦點。

就像它說的那樣,當用鼠標進行選擇時,它可以工作,而且它可以。但在這種情況下,這一切都發生在後臺。是否有另一個我可以使用的事件處理程序,它將監視更改,即使不是鼠標所做的更改?

我使用的部件是該one

這是我的js文件的代碼。

$(".multiselect").live('change', function() { 
     $("option", this).each(function() { 
       //do something. 
     }); 
    }).trigger('change'); 

非常感謝您的幫助!

+0

@mcgrailm:編輯的問題,並添加了一些代碼和鏈接到使用的小部件。非常感謝 – Lievcin 2011-05-26 19:38:05

回答

1

您可以使用trigger('change')作爲您的jQuery的一部分造成選擇更改爲,因爲它說,觸發change事件。

參考:

+0

剛剛用觸發器試過了,但也沒有改變。 – Lievcin 2011-05-26 19:36:32

+0

你有沒有試過將'.trigger()'附加到你正在改變的'option'上? '$('option',this).each(function(){/*...*/})。trigger('change');' – 2011-05-26 19:49:49

+0

謝謝,我剛剛嘗試過,並沒有奏效。我認爲它不應該,不是嗎?由於主函數不會被觸發,所以它甚至不會被內部代碼所觸發。無論如何,它會看到使用「更改」事件將不起作用,因爲按照文檔不使用鼠標進行更改。 – Lievcin 2011-05-26 19:54:36

相關問題