2011-10-11 52 views
0

在左側菜單中的文件是使用這個腳本在一個div加載了新的一頁:JQuery的複製使用JavaScript AJAX

$("#button").live('click',function(){ 
       $("#content") 
       .html(ajax_load) 
       .load("page.html"); 
      }); 

在page.html中有一些JavaScript添加用ajax一些UI元素(也與jquery)。

當我點擊相同的左側菜單項5次(所以div加載5次),似乎在page.html中的JavaScript被複制。當我在page.html中調用一個函數時,它會執行5次!

如何解決這個問題?

+0

我想你將不得不提供更多的代碼,比如你在動態加載的內容中調用的函數,以及調用該函數的代碼。 – Pointy

回答

0

如果你在page.html中使用live()來處理任何事情,即使加載了新的page.html,事件處理程序也會持續存在,這可能就是爲什麼你多次執行相同的執行。

+0

所以最好的事情是不要使用.live,那麼我應該使用什麼? – Oritm

+0

.bind()或簡寫.click(),.live()即使在執行後仍會繼續監視與該表達式匹配的新項目,.bind僅在執行時匹配。 – frisco

0

「page.html」中發生了哪些javascript執行?它們是事件綁定嗎?如果是這樣,請查看.live()方法並將JavaScript從page.html文件中提取出來。當page.html的元素被引入作用域時,它們將被live()方法中的綁定正確處理。

如果您正在做其他事情,請提供更多的上下文。