Как я могу запретить jquery выбирать родителя, когда я нажимаю на одного из потомков этого родителя? - PullRequest
2 голосов
/ 07 февраля 2010

ок, быстрый сценарий:

HTML:

<span class="answer">blah<input type="radio" value="1"></span>

JQuery:

$("span.answer").click(<br> function() {<br> check = $("input", this);<br> check.attr('checked', check.attr('checked') === true ? false : true);<br> );

Хорошо, так что это будет проверять / снимать флажок дочернего радиовхода внутри выбранного диапазона, когда я щелкаю внутри него.

Проблема, с которой я столкнулся, заключается в том, что я не хочу запускать это событие, когда фактически нажимаю на саму кнопку-переключатель (очевидно, потому что jquery будет видеть переключатель как отмеченный и снятый), что в действительности является полной противоположностью тому, что должно происходить обычно). Что-то вроде этого:

$("span.answer:not(span input)").click

Это, конечно, не работает. Есть идеи? Заранее спасибо!

Leo

Ответы [ 2 ]

5 голосов
/ 07 февраля 2010
$("span.answer input").click(function(evt)
{
    evt.stopPropagation();
});

предотвратит всплывающее событие click (и вызовет обработчик на span.answer)

4 голосов
/ 07 февраля 2010

Для выполнения того, что вы пытаетесь сделать с помощью jquery и javascript, существует специальный тег html.
это тег label

<label>blah<input type="radio" value="1" /></label>

это даст желаемый эффект

[обновление] Чтобы Internet Explorer 6 хорошо играл, используйте полный синтаксис метки с помощью атрибута for, который нацелен на идентификатор элемента ввода / выбора / и т. Д .. элемента ..

<label for="radio_1">blah<input id="radio_1" type="radio" value="1" /></label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...