使用复选框onClick覆盖parClick上的onClick事件?

时间:2012-01-14 22:38:15

标签: javascript jquery html

首先,抱歉我的英语不好。

我正在制作优惠券网站,但在选择和取消优惠券时遇到问题。每张优惠券都在DIV'框中',其中有一个复选框。

我在DIV盒子上制作了一个onClick功能(所以用户可以通过点击DIV盒子里面的任何东西来选择优惠券。我现在需要的是,当用户想要取消选择优惠券时(通过点击里面的复选框)在DIV框中),我需要“覆盖”DIV的onClick函数(执行onClick事件的复选框,而不是DIV的onClick事件)。

我知道每个人都喜欢一些代码作为例子,但问题/问题很简单,我认为你不需要在事件/函数中使用我所有无用的代码:)

谢谢:)

4 个答案:

答案 0 :(得分:3)

如果取消选中该复选框,似乎您需要stopPropagationhttp://jsfiddle.net/8Dcq8/

$("div").click(function() {
    alert("add"); // clicking anywhere in div to add coupon
});

$(":checkbox").click(function(e) {
    if(!this.checked) { // if unchecking, remove coupon
        alert("remove");
        e.stopPropagation(); // don't run parent onclick
    }
});

答案 1 :(得分:1)

如果<div>点击处理程序如下所示:

var $boxes = $('div.box');
$boxes.on('click', function ()
{
    // do whatever to select the coupon
});

然后复选框处理程序应如下所示:

$boxes.find('input[type="checkbox"]').on('click', function (event)
{
    event.stopPropagation();
    // do whatever to deselect the coupon
});

请参阅event.stopPropagation()

答案 2 :(得分:0)

你必须取消冒泡。有关说明,请参阅here

答案 3 :(得分:0)

您可以使用jQuery Alternative,或使用不针对您的复选框的onClicks创建子元素。你也许可以使用这样的东西。

document.getElementById('element').checked.onreadystatechange=function(){
//code

}
祝你好运