jquery click事件在setinterval函数内执行多次

时间:2014-09-30 15:39:19

标签: javascript jquery html

我使用了以下代码,

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');
    });
}

as .lf-item .lf-item-inner .lf-item-link项目在页面滚动时加载。所以我为此使用了setinterval但是多次获得结果就像每5000毫秒一样,当点击事件发生时,所有输出值都会产生一个图像输出。

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

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

4 个答案:

答案 0 :(得分:0)

使用unbind将删除该事件。

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');
    });   

答案 1 :(得分:0)

你可以尝试这个,实际上loadnew()重复调用,所以在regiester事件之前你需要为下面的事件删除lisener。

请注意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');
      }); 
}

答案 2 :(得分: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();
}

答案 3 :(得分:0)

你一遍又一遍地设置点击处理程序......

相反,您可以将.on()处理程序绑定到文档,并将选择器添加为第二个参数,因此即使在创建处理程序时它不存在,也会在运行时处理它。

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');
});