jquery – 如何防止多次附加事件处理程序?

前端之家收集整理的这篇文章主要介绍了jquery – 如何防止多次附加事件处理程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个函数,它将click事件处理程序附加到我的元素:
function attachClickToElem() {
    $('.elem').on('click',function () {
        alert('Hello World');
    });
}

问题是每当我调用这个函数时,
n单击处理程序附加到我的元素,所以当
我叫它两次,当我点击我的元素时我得到两个警报:

$(function () {
    attachClickToElem();
    attachClickToElem();
});

我该怎样预防呢?并检查我的元素
已经点击处理程序?

Here is fiddle

解决方法

尝试
function attachClickToElem() {
    $('.elem').off('click.mytest').on('click.mytest',function () {
        alert('Hello World');
    });
}

$(function () {
    attachClickToElem();
    attachClickToElem();
});

演示:Fiddle

其他方式

function attachClickToElem() {
    $('.elem').filter(function(){
        return !$(this).data('myclick-handler');
    }).on('click.mytest',function () {
        alert('Hello World');
    }).data('myclick-handler',true);
}

$(function () {
    attachClickToElem();
    attachClickToElem();
});

演示:Fiddle

原文链接:https://www.f2er.com/jquery/177829.html

猜你在找的jQuery相关文章