JQuery live не работает с Jqtransform select при добавлении динамических элементов управления - PullRequest
1 голос
/ 22 сентября 2011

У меня есть функциональность, в которой мы добавляем динамическую строку, нажимая кнопку добавления в таблице. Моя проблема заключается в том, что я должен предупредить сообщение при изменении списка выбора в новой строке, но он не работает, когда мы используем Jquery live click. Но он работает для всех других полей выбора, которые не добавляются динамически при использовании Jquery bind click. Кто-нибудь может помочь мне решить эту проблему?

В моем проекте мы используем Jqtransform для форматирования HTML-элементов управления.

То, что я сделал до сих пор, это

    $('div.jqTransformSelectWrapper ul li a').live('click',function() {
        alert('message');}
    });

Ответы [ 2 ]

5 голосов
/ 22 сентября 2011

Я решил эту проблему, изменив файл Jqtransform.js, вызвав событие изменения списка выбора, выполнив следующие действия. На самом деле это ошибка, связанная с Jqtransform.js

Если вы попали на этот пост, вы, вероятно, знаете, что такое jqtransform, и, возможно, вы боретесь с событием изменения выпадающего списка.

Причина, по которой он не работает, связана с тем, что jqtransform создает раскрывающийся список с использованием неупорядоченных списков, а затем скрывает ваш раскрывающийся список.

Исправление на самом деле довольно простое.

откройте файл jquery.jqtransform.js и найдите следующую строку:

/* Fire the onchange event */
if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) {
     $select[0].selectedIndex = $(this).attr('index');
     $select[0].onchange();
}

Теперь просто добавьте следующее под этой строкой:

/* Fire the change event */
if ($select[0].selectedIndex != $(this).attr('index')) {
     $select[0].selectedIndex = $(this).attr('index');
     $($select[0]).trigger('change');
}
0 голосов
/ 22 сентября 2011

Используйте взамен jQuery delegate().Это лучше чем live по многим причинам.Пожалуйста, используйте console.log() вместо alert() для отладки тоже!

$('div.jqTransformSelectWrapper ul li').delegate('a', 'click',function() {
        console.log('message');}
    });
...