ограничить распространение событий в JavaScript - PullRequest
2 голосов
/ 25 апреля 2011

Как я могу предотвратить всплывание события в родительский элемент в javascript?

Например.

<tr id="my_tr" onclick="javascript:my_tr_click();">
   <td>
      <a id="my_atag" href="javascript:void(0);" onclick="javascript:my_a_click();">Delete</a>
   <td>
</tr>

Когда я нажимаю на метку привязки «Delete», сначала вызывается функция my_a_click () , а затем вызывается родительская функция trclick - my_tr_click () . Это, я полагаю, называется распространением событий.

Как я могу предотвратить вызов функции my_tr_click () при нажатии на дочерний тег привязки?

Пожалуйста, помогите мне ..

Спасибо

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

Из режима причуд , а также этот ответ это, скорее всего, то, что вы хотите сделать, чтобы обработать свой встроенный onclick().

function my_a_click(e) {
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

И настройте разметку:

<a id="my_atag" href="javascript:void(0);" onclick="var event = arguments[0] || window.event; my_a_click(event);">Delete</a>

Рабочий пример для jsfiddle

протестировано в Chrome, Firefox 4 и IE9.

С учетом всего вышесказанного, если jQuery является опцией, это сделает вещи намного проще.

$("#my_atag").click(function(e){
  e.stopPropagation();
});

и

<a id="my_atag" href="javascript:void(0);">Delete</a>
2 голосов
/ 25 апреля 2011

Я думаю, что вы можете быть заинтересованы в http://www.quirksmode.org/js/introevents.html

something.onclick = function (e) {
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...