2012-11-13 10 views
0

我對我的主要導航鏈接一個應用函數,該函數看起來像這樣的Javascript在主導航項目變更時,目標頁面加載

$(function() { 
     $('#menu-item-1137').click(function(){ 
      $('#waterfacts').attr('class', 'active'); 
      $('li#simple2Tab').attr('class','active');  
     }); 
    }); 

所以我的目標很簡單的div類,當單擊該項目時,在id元素上應用這些類別更改。

我面對的問題是,當你已經在目的地頁面上時,該功能起作用,但假設我在網站的索引,然後我點擊該功能#menu-item該功能將無法正常工作,因爲我認爲它正在嘗試以應用到我目前正在查看的網頁。

所以我的問題是,我該如何告訴函數首先等待頁面加載,然後運行?

在此先感謝。

回答

0

嘗試使用.ready(),並在那裏使用.on()將函數綁定到元素。

這將使它的功能將只適用於頁面加載後。

實施例:

$(document).ready(function() { 

    $("#menu-item-1137").on("click", function(){ 
     $('#waterfacts').attr('class', 'active'); 
     $('li#simple2Tab').attr('class','active'); 
    }); 

});​ 
+0

嘿Ajak,謝謝你的回答!請你給我看一個你提出的使用我的基地代碼的例子嗎?我真的在這裏掙扎。不是一個JavaScript專家,對不起:/ – Jaypee

+0

當然,增加了一個基本的例子 – AJak

+0

嗨AJak,謝謝你的代碼!我收到一個錯誤,雖然試圖應用它在這種情況下的錯誤是:'未捕獲的SyntaxError:意外的標記ILLEGAL'不知道這意味着什麼。我粘貼了代碼,以避免錯誤。 – Jaypee

0

加載DOM之後你已經綁定因爲快捷

$(function() {}) 

這相當於

$(document).ready(function() {}) 

jQuery .ready()

的情況下,

首次加載頁面後,您是否動態更改/插入菜單? 如果是這樣,您必須在此之後應用該事件。

您可以輕鬆地調試這樣的問題,通過檢查你的元素是DOM綁定事件之前:

$(function() { 
    console.log($('#menu-item-1137').length); 
    $('#menu-item-1137').click(function(){ 
     $('#waterfacts').attr('class', 'active'); 
     $('li#simple2Tab').attr('class','active');  
    }); 
}); 

如果您在控制檯上輸出顯示爲零,你的元素是不是在DOM還並且該活動不會被綁定。 爲了在這種情況下幫助您,我們需要更多關於您網站結構的信息。