代码:
$(document).ready(function(){
$("#main_div").bind('click', function(e){
var x = event.pageX-document.getElementById("main_div").offsetLeft;
var y = event.pageY-document.getElementById("main_div").offsetTop;
if(...)
{
$("#container-5").css({"top":y,"left":x});
$(this).unbind('click');
e.stopPropagation();
}
else if(...)
{
....
});
});
当我点击main_div时,它会检查是否有功能并继续。容器-5的Css也改变了。现在一旦css被更改,我不希望它继续改变main_div点击。所以我试过$(this).unbind('click');
但是这没有用,因为我希望main_div被点击多次,因为我可以执行其他功能。帮助真的很感激。
答案 0 :(得分:3)
另一种方式,也许是更优雅的方式,只使用jQuery的.one()方法触发onclick处理程序一次。您可以按如下方式实现它:
$("#main_div").one('click', function(e) {
//the rest of your code
});
请注意,这可以为您节省至少4行代码!
答案 1 :(得分:1)
只需在回调函数中添加一个额外的if
语句,该语句第一次为true,之后永远为false:
var hasBeenClicked = false;
$("#main_div").bind('click', function(e){
if(!hasBeenClicked){
hasBeenClicked = true;
...
//the rest of your code
...
}
});