2017-07-13 145 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