2017-02-15 97 views
0

我有一個網頁,我希望當用戶點擊一個鏈接或當頁面加載時發生一個動作,如果URL包含一個特定的散列。只有部分工作的jQuery觸發器點擊(vs人類點擊)

這裏是一個將當上的鏈接的一個人點擊觸發代碼:

jQuery(".mygroup a").click(function(e) { 
// all the stuff that happens, including reference to and manipulation of extshapeAr 
}); 

如果用戶直接點擊任何鏈接,所有相關行動(改變字體大小和顏色以及在頁面其餘部分的單獨加載對象上的形狀上更改顏色)按預期工作。

但是如果我檢查的哈希和它是否存在使用:

jQuery(document).ready(function(){ 
    var hash = window.location.hash; 
    var hashclean = hash.substr(1); 
    if (hash) { 
    jQuery('.mygroup a.'+ hashclean).trigger('click'); 
    } 
}); 

的點擊觸發並執行一些代碼,但隨後與參考錯誤停止告訴我,我分別裝載對象沒有定義的。

Uncaught ReferenceError: extshapeAr is not defined

不應該觸發器的工作方式與人類點擊相同嗎?我錯過了什麼?

+0

請將您的所有代碼粘貼錯誤功能。 –

+0

我明白,但有很多代碼,我想盡可能簡化問題。也許我需要重新提出這個問題,我會再看一遍 – Stephen

回答

0

好吧,我想通了,是什麼造成了這一點。創建extshapeAr的代碼運行時間太長,所以儘管我認爲我已經通過文檔準備好聲明來保護它,但顯然不是。在創建對象之後,我必須將散列檢查放在單獨加載的代碼中。現在這一切都按預期工作。

0

您將點擊處理程序附加到jQuery(".mygroup a"),並以某種方式觸發了與第一個上下文不匹配的jQuery('.mygroup a.'+ hashclean)上的點擊事件。不斷變化以匹配與jQuery(".mygroup a")

廣東話重現錯誤,您可以複製它,然後將其粘貼在這裏