2014-10-05 71 views
0

我有一個點擊事件,我的動作導航到某個網址,然後顯示/隱藏一個按鈕是相關聯的。我使用的是這樣的:Jquery-如何處理事件作爲參數點擊功能

ViewManager.js

$("#btn").on("click", function(event){ 
    window.location.href= '#test.html'; 
} 

後,我打開這個網頁,我有一個按鈕,我需要表現取決於target.id隱藏(在這種情況下是。 btn)。如果btn是目標ID,我還隱藏按鈕i顯示按鈕,類似如下:

account.js

if (event.target.id == 'btn'){ 
     $('#submit-account-detail').css('display', 'none'); 
     else { 
     $('#submit-account-detail').css('display', 'block'); 
     } 

現在的問題是,鍍鉻處理的全球盛會完美,但Firefox拋出錯誤:

ReferenceError: event is not defined 

在我導航到不同的URL之前,我將事件作爲參數傳遞。由於Firefox不能全局處理事件,它會引發錯誤。我嘗試查找源代碼,並且他們建議將事件作爲參數傳遞給click事件(已完成)。但在頁面導航之後,如何使事件可見?

編輯-------------------

我的確在ViewManager.js腳本是這樣的:$("#btn").on("click", function(event){ targetId = window.event; window.location.href= '#test.html'; }

,然後我測試條件在account.js腳本:

if (targetId && targetId === 'btn'){ 
      $('#submit-account-detail').css('display', 'none');} 

它工作正常時,它已經定義了目標ID,而是拋出一個ReferenceError: targetId is not defined當它targetId != 'btn' ...我是個宣佈以錯誤的方式變種?

+0

您的全球「事件」聲明在哪裏?您向我們展示的是一個函數參數,它是該函數的本地*。它決不可用於在不同的腳本文件中編碼。 – Bergi 2014-10-05 23:32:50

+0

如何以及在哪裏可以申報一個?會這樣:window.event =''?? – user1234 2014-10-05 23:37:43

+0

您是否正在導航到不同的_page_或當前頁面中的元素/定位點?如果它是一個不同的頁面,你不能通過一個JS變量來做到這一點,因爲即使是全局變量在當前頁面中也只是「活着」的。如果它在當前頁面內導航,爲什麼不能在原始點擊處理程序中顯示/隱藏按鈕? – nnnnnn 2014-10-05 23:38:38

回答

0

在頁面導航之後,您不能在新頁面中使用舊的事件對象。不過,您可以通過獲取請求或通過設置cookie來傳遞關於上次事件的信息。

在這裏,看起來是你只是改變位置的散列。正確的方法是window.location.hash = "#something"。在這種情況下,您的頁面實際上不會重新加載。這意味着如果你設置了一個全局變量,你可以從其他函數訪問它。

有更多的方法來定義一個全局變量。

  1. var varname任何功能外,並設置varname任何地方你想要的任何值。
  2. 設置window.varname任何地方任何值。

您可以通過簡單地使用varname來使用此變量,除非您有另一個具有相同名稱的本地變量。

我是你的情況,試着在你的事件處理程序中設置window.event = event

+0

我試過了,它適用於真實的條件,但是我怎樣才能在全球範圍內處理事件以通過所有條件?上面編輯..謝謝! – user1234 2014-10-06 00:03:30

+0

還有其他什麼條件?理想情況下,你不應該把事件聲明爲全局變量,但是如果你必須這樣做,我的建議將會使用一些其他的名字,比如'myevent'或者其他名字,並且當你想使用那個事件數據的時候明確地使用它。 – nisargjhaveri 2014-10-06 00:10:17

+0

或者您可以將'event.target.id'存儲在一個全局變量中。 – nisargjhaveri 2014-10-06 00:10:44