只允许onclick一次

时间:2011-01-09 10:57:43

标签: jquery event-handling jquery-click-event

为了在选择列表中添加很长的选项元素列表,我点击它们添加它们。我想防止列表多次添加。我怎样才能做到这一点?

$("#skiresort").click(function(){
$("#skiresort").load("/v3/inc/review.php");
});

2 个答案:

答案 0 :(得分:7)

有一种只执行一次事件处理程序的方法:.one()

$("#skiresort").one('click', function(){
    $("#skiresort").load("/v3/inc/review.php");
});

答案 1 :(得分:2)

Felix的答案非常适合jQuery,我只是为了展示它的通用JavaScript技术而添加它:

function runOnce(f) {
   var called = false;
   return function() {
     if (!called) {
       called = true;
       return f.apply(this, arguments);
     }
   };
 }

现在您可以像这样使用它:

var myNewFunction = runOnce(myFunction); // this does not run "myFunction", but returns a new one that will only run once.

myNewFunction(1, 2, 3); // runs the "myFunction" and returns whatever it returns
myNewFunction(1, 2, 3); // doesn't do anything, just returns undefined