当前位置 : 主页 > 网页制作 > JQuery >

jquery如果click在元素上,执行此操作,否则执行此操作

来源:互联网 收集:自由互联 发布时间:2021-06-15
这让我很困惑.这是我试图实现的伪代码,我需要使用点击作为与我建立的触摸手势挂钩. if body is clicked { if click has touched .circle { remove circle; } else { create circle; }} 编辑:自从编写下面的答
这让我很困惑.这是我试图实现的伪代码,我需要使用点击作为与我建立的触摸手势挂钩.

if body is clicked {
    if click has touched .circle {
        remove circle;
    }
    else {
        create circle;
    }
}
编辑:自从编写下面的答案以来,委托已被 on取代,应该使用代替.

您可以(ab)使用发生的event bubbling.你将点击监听器附加到每个div都有一个将要制作的类圈(可以使用jQuery的delegate方法),一旦你完成了该事件的处理,取消冒泡,这样它就不会到达身体点击监听器.

并且,在身体监听器上,只需附加圆圈即可.

像这样的东西:

var circle = $("<div>").addClass("circle").text("Circle!");

$("body").click(function() {
    $(this).append(circle);
});

$("body").delegate(".circle", "click", function(e) {
    $(this).remove();

    //To stop the bubbling up
    e.stopPropagation();
    return false;
});

或者,更简单的方法,只需使用event.target检查click事件的目标:

var circle = $("<div>").addClass("circle").text("Circle!");

$("body").click(function(e) {
    var target = $(e.target);

    if (target.hasClass("circle")) {
        target.remove();
    }
    else {
        $(this).append(circle);
    }
});

注意:因为我创建了圆形div作为变量,所以只能有一个.如果你不想那样,你可以使用jQuery.fn.clone,或者只是当场制作你需要的东西.

网友评论