【问题标题】:jQuery want to override function on button clickjQuery想要覆盖按钮点击的功能
【发布时间】:2016-09-28 12:01:53
【问题描述】:

我已经有一个 jQuery .on() 函数,其中单击事件在按钮上传递。

我想限制用户点击超过 1 个按钮,但我不想更改当前函数而是编写新函数

$('button').on('click', function() {
    alert('hi');
});

$('button').click(function(event) {
    var count = 0;
    count = count + 1;
    if (count > 1) {
        event.preventDefault();
        console.log('dont call alert');
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<button>Click Me !</button>

【问题讨论】:

  • 可以使用jQuery .one():api.jquery.com/one
  • 我已经在另一个文件中编写了一个 .on() 函数,但我无权访问该文件......所以想覆盖它

标签: javascript jquery


【解决方案1】:

我认为您正在寻找类似以下的内容。

$('button').on('click', function () {
    alert('hi');
});


var isCliked = true;
$('button').click(function () {
    $('button').off('click');

    isCliked && $('button').click(function() {
        console.log('dont call alert');
        isCliked = false;
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
    Click Me !
</button>

【讨论】:

    【解决方案2】:

    JQuery off() 方法删除元素的事件处理程序。您可以在单击时删除按钮的click 事件。使用这项工作,按钮单击事件仅触发一次。

    $("button").click(function(event){
        alert();
        $(this).off("click");
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button>Button</button>

    【讨论】:

      【解决方案3】:

      你可以使用jQuery.one()方法:

      $('button').one('click', function() {
          alert('hi');
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      
      <button>Click Me !</button>

      【讨论】:

      • 我已经在另一个文件中编写了一个 .on() 函数,但我无权访问该文件...所以想覆盖它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多