Разрешить клик только один раз - PullRequest
2 голосов
/ 09 января 2011

Чтобы добавить в список выбора очень длинный список элементов опций, я добавляю их по щелчку.Я хочу предотвратить, чтобы список добавлялся несколько раз.Как я могу это сделать?

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

Ответы [ 2 ]

7 голосов
/ 09 января 2011

Существует метод для выполнения обработчика событий только один раз: .one():

$("#skiresort").one('click', function(){
    $("#skiresort").load("/v3/inc/review.php");
});
2 голосов
/ 09 января 2011

Ответ Феликса идеально подходит для 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
...