我有一个函数,它将click事件处理程序附加到我的元素:
function attachClickToElem() { $('.elem').on('click',function () { alert('Hello World'); }); }
问题是每当我调用这个函数时,
n单击处理程序附加到我的元素,所以当
我叫它两次,当我点击我的元素时我得到两个警报:
$(function () { attachClickToElem(); attachClickToElem(); });
我该怎样预防呢?并检查我的元素
已经点击处理程序?
解决方法
尝试
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