2009-10-11 16 views
0

我有一個ID爲「嚮導」的表單 - 我只有這種形式的選擇元素。這種形式是在使用JQuery plugin fancybox的燈箱:在窗體中監聽更改事件:JQuery

我想知道什麼時候使用JQuery更改了其中的任何一個。我怎樣才能做到這一點?我目前有:

$('form#wizard select[name=servers], form#wizard select[name=cores]').change(function() { 
var channels = parseInt($('form#wizard select[name=servers]').val(), 10) * parseInt($('form#wizard select[name=cores]').val(), 10); 
$('#yellow').val(channels); 
}); 

編輯 - 我已在上面裹着$(document).ready(function() {...}

但是,這是行不通的,它甚至不會運行。我已經把警報放在那裏,他們從來沒有出現。以上只適用於以上是我已經刪除顯示的div:無,奇怪!所以我正在尋找一個不同的實現來解決這個問題,因爲我需要這個燈箱。

我真的需要幫助。

感謝所有

回答

5

jQuery的change功能僅結合那些目前domready中事件觸發時的元件。如果您使用的lightbox插件是動態創建元素,則應該使用jQuery的live函數來「將您的處理程序綁定到所有當前 - 和將來匹配的元素」。

更改此:

$('your selector').change(function() { /* code ... */ }); 

與此:

$('your selector').live('change', function() { /* code ... */ }); 
+0

真棒!這工作更好,但它似乎只是一次改變?這是否應該發生? – Abs 2009-10-11 18:48:19

+0

其實它的工作,但ID爲「黃色」的跨度元素沒有得到更新,當我關閉lightox和repoen它時得到更新?我怎樣才能讓它在變更完成後立即生效? – Abs 2009-10-11 19:02:44

+0

我的猜測是,id爲「yellow」的跨度被lightbox插件複製,這意味着最終會有兩個(或多個)具有相同ID的跨度元素。由於ids應該是唯一的,所以jQuery只更新你的原始(隱藏)範圍。嘗試使用類而不是id。 – mtyaka 2009-10-11 19:14:59