Событие change
не всплывает в IE (см. здесь и здесь ). Вы не можете использовать делегирование событий вместе с ним.
На самом деле, именно из-за этой ошибки IE jQuery live
пришлось официально исключить change
из списка поддерживаемых событий (к сведению, спецификация DOM гласит change
должен всплыть ) . [ 1 ]
Что касается вашего вопроса, вы можете связать непосредственно с каждым выбором:
$('#container select').change(/*...*/)
Если вы действительно хотите делегировать события, вы могли бы найти некоторый успех, пытаясь, что этот человек сделал и связывал с click
только в IE, что делает пузырем :
$('#container').bind($.browser.msie ? 'click' : 'change', function(event) {
/* test event.type and event.target
* to capture only select control changes
*/
})
Но это обнаружение браузера кажется действительно неправильным. Я бы действительно попробовал поработать с первым примером (привязка напрямую к выпадающим спискам). Если бы у вас не было сотен <select>
коробок, делегирование событий в любом случае не купило бы вам много.
[ 1 ] Примечание: jQuery> = 1.4 теперь имитирует всплывающее событие change
в IE через live()
/ on()
.