2012-02-20 179 views
1

我在調用任何jQuery函數時遇到問題。使用jQuery基本功能

負載正在工作,但當我打電話給另一頁時,什麼都沒有工作?

我的代碼是:

JS:

$(document).ready(function(){ 
    $("#content").load('page.php'); 

    $("#submenu").click(function() { 
     alert('Hello'); 
    }); 
}); 

HTML:

<div id="content"></div> 

page.php文件

<div id="submenu"> 
    <ul> 
     <li><a href="#profile">profile</a></li> 
     <li><a href="#logout">logout</a></li> 
    </ul> 
</div> 
+0

你在所有的頁面上都包含jquery.js庫嗎?你可以顯示一個不工作的頁面的html/js嗎? – JohnFx 2012-02-20 20:50:37

回答

2

我不知道你是什麼意思「當我打電話給另一個頁面「,但如果你正在嘗試t o爲正在加載的內容中的元素設置事件處理程序,您需要等待直到它們已經加載 - .load() method是異步的,這意味着代碼在它立即執行之後(即,不等待響應負載) .click()處理程序一旦完成此舉的部分代碼到​​方法的完整的回調:

$(document).ready(function(){ 
    $("#content").load('page.php', function() { 
     $("#submenu").click(function() { 
      alert('Hello'); 
     }); 
    }); 
}); 

或者您可以使用委派事件處理和單擊處理程序綁定到你的容器對象:

$(document).ready(function(){ 
    $("#content").load('page.php'); 

    $("#content").delegate("#submenu", "click", function() { 
     alert('Hello'); 
    }); 
}); 

請參閱.delegate() doco瞭解更多信息,並注意如果您使用的是最新版本的jQuery,則應使用.on() method而不是.delegate()。 (或者如果你有一個非常舊的jQuery版本,你需要使用.live()。)