2011-07-27 65 views
1

我有一個頁面,它使用jquery和一個簡單的導航菜單加載它的內部內容。因此,該頁面只有一個經常訪問的URL。我的問題是,我似乎無法從加載的div中獲取內容來修改'那個'特定的div。例如,我沿着這行的東西作爲我的jQuery加載函數:加載到jquery已經被加載後的div元素

$(document).ready(function(){ 

// load index page when the page loads 
$("#response").load("start.html"); 
$("#home").click(function(){ 
// load home page on click 
    $('#response').load('start.html', function() { 
     resizefunc(); 
    }); 
}); 
... 

如果我一個鏈接到#與來自裝載機功能的ID加載頁面的一個範圍內創建一個元素,點擊它只是移動焦點回到頁面的頂部,而不是重新加載我的「回覆」div。

回答

1

由於這些導航元素(即#home)最初並不存在,因此在ready上綁定這些事件對您沒有好處。你需要live綁定這些相同的事件或delegate他們從一個父元素。

這可以很容易地通過做這個簡單的測試來展示:

alert($("#home").length); 

這將提醒0


嘗試這種解決方案,而不是

$(document).ready(function(){ 
    $("#response").load("start.html"); 
    $("#home").live("click", function(){ 
     $('#response').load('start.html', function() { 
      resizefunc(); 
     }); 
    }); 
}); 

$(document).ready(function(){ 
    $("#response").load("start.html"); 
    $("#response").delegate("#home", "click", function(){ 
     $('#response').load('start.html', function() { 
      resizefunc(); 
     }); 
    }); 
}); 

使用livedelegate將此選擇器綁定到點擊而不是常規點擊事件將允許指定的功能對於現在存在且可能存在的所有選定元素存在。

+0

這正是我所期待的。感謝您的快速回復......我太快選擇它作爲正確的答案。我會在5分鐘內給它支票。 –