【问题标题】:Allow onclick just once只允许点击一次
【发布时间】:2011-01-09 10:57:43
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我想防止再次点击同一个按钮,但如果用户点击另一个按钮,那么前一个按钮应该是可点击的....怎么做?
    • @Uday:您可以使用一个共享变量来保存对上次单击按钮的引用并与之进行比较。
    • 是的。我终于做到了。我虽然可以有任何功能。
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多