防止jQuery.fn.extend多次触发

时间:2016-01-09 19:02:25

标签: javascript jquery

我把以下例子

<script>

    $( "#buttom1" ).click(function() {
    console.log('ok')
    $.fn.thefuncion();


    });


    $.fn.thefuncion=function(){

    jQuery('#buttom2').click(function(){
     alert('ready')
     });
    }

</script>

    <input type="submit" name="button" id="buttom1" value="buttom 1">
    <input type="submit" name="button" id="buttom2" value="buttom 2">

问题是警告出现按下1按钮的次数

无论按下1按钮的次数如何,我都需要按下按钮2后只显示警告

2 个答案:

答案 0 :(得分:2)

尝试以正确的方式进行。不要多次绑定事件。这是不必要的。你可以以事件授权的形式实现你想要的目标。

$( "#buttom1" ).click(function() {
    jQuery('#buttom2').addClass("active");
});

jQuery(document).on('click','.active', function(){
    alert('ready')
});

其中document将成为事件冒泡的终点,由此触发事件的罪魁祸首将被捕获并且如果有的话将触发其事件。因此,不必遍历文档。而不是document传递按钮buttom2

的任何静态最接近的父级

DEMO

答案 1 :(得分:0)

您可以使用jQuery .one()函数:

$( "#buttom1" ).one('click', function() {

    console.log('ok')
    $.fn.thefuncion();

});

此事件将在第一次点击button1时触发,button2事件将仅设置一次。