当我点击父母中的一个孩子时,如何防止jquery选择父母?

时间:2010-02-06 21:39:52

标签: javascript jquery jquery-selectors

好的快速方案:

HTML:

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

jquery的:

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

好的,这样当我点击它内部时,这将检查/取消选中所选范围内的子无线电输入。

我遇到的问题是,当我实际点击单选按钮本身时,我不想运行此事件(显然因为jquery会将单选按钮视为已选中并取消选中 - 实际上与应该发生的事情完全相反通常情况下)。有点像这样:

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

这当然不起作用。有任何想法吗?提前谢谢!

利奥

2 个答案:

答案 0 :(得分:5)

$("span.answer input").click(function(evt)
{
    evt.stopPropagation();
});

将阻止点击事件冒泡(并在“span.answer”上触发处理程序。)

答案 1 :(得分:4)

有一个特定的html标记来完成你尝试用jquery和javascript做的事情。
它是label标记

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

这将产生你想要的效果

<强> [更新] 为了让Internet Explorer 6更好地使用标签的完整语法,使用for属性,该属性以表单输入/ select / etc ..元素的id为目标。

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