Как запустить change () в динамически сгенерированном множественном выборе? - PullRequest
1 голос
/ 06 января 2012

Я использую jquery (mobile) для создания меню выбора, которое скрывает / показывает столбцы таблицы HTML.

выглядит так:

 container = $('<select name="toggleCols" id="toggleCols" multiple="multiple"><option value="default" data-placeholder="true">Edit</option></select>');

 $('.tableRows').each( function(i) {
     if ( $(this).is(".toggle") ) {
         var toggle = $('<option value="'+i+'">sometext'+i'+</option>');
     container.find("#toggleCols").append(toggle); 
     });

Это создает меню выбора, которое содержит одну опцию для каждого столбца таблицы. Выбор этого параметра должен скрывать / переключать соответствующий столбец таблицы.

Однако я не могу запустить событие изменения:

 $("#toggleCols").change( function(){
    console.log( "change" ) 
    // do stuff
    })

Если я использую live ('change' ... и у меня есть 10 столбцов, я получаю 10 console.logs каждый раз, когда выбираю одну опцию. Так что это тоже не работает.

ВОПРОС
Есть ли способ использовать изменения без live и получить единственный console.log?

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы используете последнюю версию jQuery? Возникла проблема с этим, которая была исправлена ​​после jQuery 1.4.2.

См. Связанную проблему здесь: Любая альтернатива jQuery change () для обнаружения, когда пользователь выбирает новый файл через диалоговое окно в IE8?

пс. Я пытался написать это как комментарий / вопрос под вашим постом, но по какой-то причине мне это запрещено. Надеюсь это поможет.

0 голосов
/ 06 января 2012

Я должен был удалить привязку события из цикла, добавив опции. Тогда использование live работает нормально и срабатывает только один раз.

...