您需要根据点击的内容取消冒泡事件......这是一个执行此操作的脚本(在纯 javascript 中 - 在 jQuery 中更容易做到 - 因为您可以检查事件源上是否有一个类例如然后取消它)。此脚本检查单击的标签是否为 FIELDSET,如果不是取消气泡,是否弹出警报。
小提琴http://jsfiddle.net/YK3TU/2/
代码:
HTML:
<fieldset class="checkbxr full small" onclick="javascript:doSomething()">
<label for="" class="fat_label">Category</label>
<input type="checkbox" name="true_checkb" id="">
<span class="dmy_checkb"></span>
</fieldset>
Javascript:
function doSomething(e) {
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
console.log(targ)
if (targ.tagName!="FIELDSET") {
cancelBubble(e)
} else {
doMyThing()
}
}
function cancelBubble(e) {
var evt = e ? e:window.event;
if (evt.stopPropagation) evt.stopPropagation();
if (evt.cancelBubble!=null) evt.cancelBubble = true;
}
function doMyThing(){
alert("this is a test")
}