Функция запустила строку таблицы onclick, необходимо остановить флажки для запуска функций - PullRequest
0 голосов
/ 06 января 2012

У меня есть функция, настроенная на срабатывание при нажатии на определенные строки таблицы, но вот общая идея:

<p onclick="alert('Hello World!');">xxxxxxxxx<input type="checkbox"></p>

Как сделать так, чтобы функция не запускалась при нажатии флажка?

Ответы [ 4 ]

2 голосов
/ 06 января 2012
<p onclick="var c = event.srcElement ? event.srcElement : event.target; if(c.tagName === 'P')alert('Hello World!');">Whats up<input onClick="" type="checkbox"></p>

С помощью event.srcElement вы можете получить доступ к элементу, который фактически вызвал событие

РЕДАКТИРОВАТЬ: Firefox не имеет свойства srcElement, поэтому он должен использовать целевое свойство

1 голос
/ 06 января 2012

В любом случае вы должны создать обработчик кликов для флажка.

Если вы используете jQuery, вам нужно всего лишь вызвать event.stopPropagation().

В противном случае проверьте этот пост http://www.quirksmode.org/js/events_order.html#link9 для примера кода (и полного объяснения того, как работает всплывающее окно / захват).

1 голос
/ 06 января 2012

Более простым способом является установка и .click обработчик событий для флажка и выполнение event.stopImmediatePropagation ()

$ (': checkbox'). Click (function (событие) {event.stopImmediatePropagation ();};

0 голосов
/ 06 января 2012

Ответ Ивана (+1) работает в моем тесте, но если ваш вариант использования более сложный (то есть, щелкая дочерние узлы в P), он может потерпеть неудачу. Другой вариант:

<p onclick="alert('Hello World!');">xxxxxxxxx<input type="checkbox" onclick="event.stopPropagation()"></p>

... который работает по крайней мере в моем тесте (Chrome)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...