2017-07-13 218 views
0

我试图触发click事件时,页面加载但只有一次,每个页面加载。现在发生的事情是,在本地主机上它工作正常,但是当我上传到服务器时,它根本不会被触发。Click事件不触发正确

当时的想法是一个计数器设置为0时,页面加载,然后由1 INC计数器,以禁止其它点击。显然,某处有错误,但我解决不了。

我使用jqwidgets jqxgrid以显示数据和获取类作为变量。我也使用jQuery 1.11.1

我将不胜感激,如果有人可以帮助我解决这个,因为我似乎已经尝试了很多组合,但确定在本地主机上,但没有在服务器上。我在服务器上使用php v5.3.13 wamp和5.4。非常感谢

var counter = 0; 
window.onload = function() { 
    var calendaricons = document.getElementsByClassName('jqx-icon-calendar'); 

    for (var i = 0; i < calendaricons.length; i++) { 
    calendaricons[i].addEventListener('click', function() { 
     if (counter === 0) { 
     notif({ 
      type: "info", 
      msg: "Test Message", 
      width: 650, 
      height: 99, 
      multiline: true, 
      position: "center", 
      fade: true, 
      //timeout: 3000, 
      autohide: false, 
      clickable: true 
     }); 
     counter++; 

     } else { 
     return false; 
     } 
    }); 
    } 
} 
+1

如果你正在使用jQuery作为你的标签说,你可以使用'。一(“点击”,“#myId”,函数(){...})' –

+0

不在加载函数内部声明计数器能解决问题吗? – user5014677

+0

你可以试试这个:https://stackoverflow.com/a/44626357/769326 – dork

回答

2

如果您正在使用jQuery,这似乎的情况下,你可以使用one功能,可以让您的处理程序是侏儒只有一次。

下面是使用one功能的代码:

$(window).load(function() { 
    $('.jqx-icon-calendar').each(function(index, item) { 
     $(this).one("click", function() { 
      notif({ 
       type: "info", 
       msg: "Test Message", 
       width: 650, 
       height: 99, 
       multiline: true, 
       position: "center", 
       fade: true, 
       //timeout: 3000, 
       autohide: false, 
       clickable: true 
      }); 
     }); 
    }); 
}); 
+0

爱手柄。问题在于页面重新加载不会再次触发。我必须在ff中进行强制刷新,然后才能正常工作。需要它使用regulat页面加载工作。谢谢 – user1532468

+0

所以,你可以使用'$(document).ready'而不是'$(window).load'。我刚刚翻译了你的本地代码。 –

+0

我已经把文件准备好,但尽管所有其它JS是工作的罚款还没有开火服务器。只是这一个脚本。有关如何解决问题的任何建议。谢谢 – user1532468