2

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

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

2 回答 2

7

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

$("#skiresort").one('click', function(){
    $("#skiresort").load("/v3/inc/review.php");
});
于 2011-01-09T11:00:43.083 回答
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
于 2011-01-09T11:40:04.720 回答