这让我很困惑.这是我试图实现的伪代码,我需要使用点击作为与我建立的触摸手势挂钩. 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,或者只是当场制作你需要的东西.