Переопределение события Jquery

0

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

$(function(){
    $("body").delegate("table tr","click",function(evt){
        alert("row clicked");
    });

    $("body").delegate("table tr input[type=button]","click",function(evt){
        alert("button clicked");
    });
});

http://jsfiddle.net/jjMVU/

Теги:

2 ответа

2

Во - первых, delegate имеет устареет в пользу on. Во-вторых, вам нужно прекратить распространение события. Попробуй это:

$("body").on('click', "table tr input[type=button]", function(evt){ 
    evt.stopPropagation();
    alert("button clicked");
});

Обновленная скрипка

  • 0
    событие щелчка строки теперь не запускается, я также хочу, чтобы событие щелчка строки срабатывало, когда кнопка не нажата
  • 0
    @ Swapy не забывайте, что вам нужно менять порядок параметров при использовании on, он включен on(event, selector, handler); , Я обновил свою скрипку с полным примером.
0

Это происходит из-за пузыря событий. чтобы это не происходило, вы должны использовать evt.stopPropagation() при нажатии кнопки.

Поэтому ваш второй обработчик событий должен выглядеть так

$("body").delegate("table tr input[type=button]","click",function(evt){
    evt.stopPropagation();
   alert("button clicked");
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню