JavaScript При клике на дочерний элемент вызывается обработчик родителя

*
1
*
✩
Есть кусок html
<tr>
  <td>
    <input id="some_id" type="checkbox" />
  </td>
<tr>


На строку (tr) и на чекбокс вешается обработчик клика при помощи jQuery. Примерно так
$("tr").click(function() { /*...*/ });
$("#some_id").click(function() { /*...*/ });


При клике на чекбокс также срабатывает и обработчик клика по строке. Как этого избежать?

Заранее благодарен за ответы.
jquery onclick events
7 месяцев 10 дней назад
#ссылка не по теме? tweet сохранить
комментировать



*
3
*
Все достаточно просто)

Если бы вы использовали только чистый Javascript, то Вам понадобилось бы написать примерно следующую функцию:
function stopEvent(evt) {
  (evt && evt.stopPropagation) ? evt.stopPropagation() : window.event.cancelBubble = true;
}

А так как в любой обработчик в качестве параметра передается само событие, то в нужно было бы делать как-то так:
function start(evt) { // функция, которую мы бы использовали в качестве обработчика)
  stopEvent(evt);
}

НО! Вы же используете JQuery. И в этом случае все значительно проще, так как уже есть готовая функция, а Вам достаточно сделать так:
$("tr").click(function() { /*...*/ });
$("#some_id").click(function(event) {
      event.stopPropagation();
      /*...*/
});

Вот и все, достаточно просто объявить входящий параметр, который передается всегда и использовать уже имеющуюся функцию)
Надеюсь помог)
#ссылка не по теме?
7 месяцев 10 дней назад
Sultry
[4005]
Да, спасибо. – radioheaded 7 месяцев 10 дней назад
Комментировать
*
0
*
Можно еще через e.target
...
if( (name = e.target || e.srcElement).tagName && name.toLowerCase() == 'tr' ) {
   ...
}
...

Но такой вариант более применим к конструкции типа
$('table').click(fn)

И когда ТР\ок 30+ =)
#ссылка не по теме?
7 месяцев 10 дней назад
Комментировать

Ваш Ответ:


Ваш OpenID


Получить OpenID

Что такое OpenID?
или

Логин

Email

Пароль


Будет создана учетная запись и на email выслано письмо подтверждения.


новые ответы

Первый раз на сайте?

askdev.ru — это социальный сайт вопросов и ответов для IT-специалистов: программистов, веб-дизайнеров, системных администраторов.
о сайте » регистрация »

Показан

514 раза

Задан

7 месяцев 10 дней назад

Теги
jquery x 135
onclick x 5
events x 7
X

Пожалуйста, войдите:


Имя:
Пароль:
регистрация
Или используйте OpenID