2016-03-04 2 views
0

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

$('#tblSearchDataSource').find('tbody').find('tr').find('td').find('input[class="myClass"]').live('click', function (event) { 
     id = $(event.target).parent().parent().find('td:first').text(); 
     $('[id$=' + hidReturnData + ']').val(id); 
     dialog.dialog("close"); 
     __doPostBack($(btnTarget).attr('name'), ''); 
    }); 

К сожалению постбэк срабатывает несколько раз, когда я нажимаю на любую кнопку - и это приводит к проблеме в моем жерех-страница.

+0

вы можете поделиться html-кодом plz – RRR

+0

add event.stopPropagation() – RRR

+0

@RRR: Это слишком много кода для вставки. event.StopPropagation() не работает. – isHuman

ответ

0

Переключение с

$('#tblSearchDataSource').find('tbody').find('tr').find('td').find('input[class="myClass"]').live('click', function (event) {

к

$('#tblSearchDataSource').find('tbody').find('tr').find('td').find('input[class="myClass"]').one('click', function (event) {

фиксированная моя проблема.

0

Это поможет вам в получении события щелчка для кнопки вы хотите

$(document).on('click','.myclass',function(e){ 
    console.log("click",e); 
}); 

Проверить fiddle здесь Вы можете применить логику для извлечения значения из вашего скрытого элемента.

+0

Я не вижу никакого вывода консоли. – isHuman

+0

В скрипке вы говорите ..? –

+0

Я добавил ее в свой код получив в три раза одну и ту же строку: f.Event {originalEvent: MouseEvent, type: "click", timesStamp: x, jQuery1620 ...: true, который: 1 ...} – isHuman

0

вместо .live() использовать .on() ... также элемент мог бы подключить обработчик событий дважды или много раз (если событие срабатывает много раз) в коде. Возможно, вы создаете элемент динамически. Поэтому каждый раз, когда вы нажимаете на элемент, обработчик события срабатывает каждый раз, когда он привязан к элементу.

Вместо

$('#tblSearchDataSource').find('tbody').find('tr').find('td').find('input[class‌​="myClass"]').live('click', function (event) {

использование

$('#tblSearchDataSource').find('tbody').find('tr').find('td').find('input[class‌​="myClass"]').off('click').on('click', function (event) { 
Смежные вопросы