2014-09-30 124 views
1

我用下面的代码中多次执行,jQuery的单击事件setInterval函数

setInterval(loadnew, 5000); 

function loadnew() { 
    $(".lf-item .lf-item-inner .lf-item-link").load(); 
    $('.lf-item .lf-item-inner .lf-item-link').on('click', function() 
    { 
     alert('image'); 
    }); 
} 

为.lf项.lf项-内.lf项目链接项目被加载时页面滚动。所以我使用setinterval这个,但得到的结果多次像每隔5000毫秒创建一个图像输出时发生单击事件它彻底的所有输出值。

请运行并等待超过5000毫秒,然后单击图像。 以下链接:http://jsfiddle.net/g3fkL736/

任何人都可以帮我解决这个问题吗?

+0

为什么每次都需要重新绑定点击事件?您不是动态创建该元素,只是填写内容。 – Barmar 2014-09-30 15:42:36

+0

是否需要在_loadnew_函数中设置click事件?您正在多次设置一个活动。你可以使用unbind或off,但在你的情况下这不是一个好习惯。 – 2014-09-30 15:42:44

+0

感谢barmar和马里奥arague为您的输入 – Moorthi 2014-09-30 16:29:23

回答

0

你可以试试这个,其实loadnew()呼吁屡所以你需要删除lisener像下面的事件regiester事件之前。

请注意off("click")

function loadnew() { 

     $(".lf-item .lf-item-inner .lf-item-link").load(); 

     $('.lf-item .lf-item-inner .lf-item-link').off("click").on('click', function() { 
      alert('image'); 
     }); 
} 
+0

真的非常感谢很多raja ....现在修复 – Moorthi 2014-09-30 16:26:18

0

使用取消绑定将删除事件。

function loadnew() { 
$(".lf-item .lf-item-inner .lf-item-link").load(); 
    $('.lf-item .lf-item-inner .lf-item-link').unbind('click'); 
    $('.lf-item .lf-item-inner .lf-item-link').on('click', function() 
    { 
     alert('image'); 
    }); 
0

将事件绑定放在间隔函数之外,那里就不需要了。

$('.lf-item .lf-item-inner .lf-item-link').on('click', function() 
{ 
    alert('image'); 
}); 

setInterval(loadnew, 5000); 

function loadnew() { 
    $(".lf-item .lf-item-inner .lf-item-link").load(); 
} 
0

你一遍遍设置单击处理...

相反,你可以绑定.on()处理程序文件,并选择添加为第二paramenter,所以即使它在创建处理程序时不存在,它将在运行时处理。

setInterval(loadnew, 5000); 
function loadnew() { 
    $(".lf-item .lf-item-inner .lf-item-link").load(); 
} 

$(document).on('click', '.lf-item .lf-item-inner .lf-item-link', function() 
{ 
    alert('image'); 
});