2009-09-22 61 views
1

我有一些選擇,我已經建立爲一個PHP頁面的外部組件,然後加載到一個HTML頁面。例如,我可能會使用在整個網站的幾個地方組件「usersList」,所以我的PHP生成此列表,然後我用負載jQuery來調用組件,如:jQuery在外部選擇組件上的更改事件

$("#samaritan").load('usersList.php'); 

那工作得很漂亮,而且我能夠在包含文檔中編寫jquery以獲得我的usersList的val()很好。我希望能夠在這個列表的變化上引起事情發生。唯一的問題是,更改事件似乎只想在jQuery代碼與原始組件位於同一頁面時觸發。例如,下面的代碼只會在生成選擇的php頁面上更改選擇時觸發警報,並顯示下拉列表的值。

$("select").change(function() { 
       alert("you chose "+$(this).val()); 
      }); 

我寧願沒有寫這個代碼直接到組件頁面B/C我想的行爲是在不同的地方,我用它不同。我試過使用.blur,但我得到了相同的結果。任何想法如何觸發選擇的文檔中包含選擇加載到一個div的更改事件?

回答

3

聽起來就像您正在運行代碼以在元素實際添加到DOM之前添加處理程序。確保添加處理程序的jQuery代碼在加載函數完成其工作後執行。重新加載列表時,您需要重新應用處理程序。最簡單的方法是在load方法回調中應用處理程序。很遺憾,您不能使用live handlers,因爲它們不支持更改事件。

$("#samaritan").load('usersList.php', function() { 
    $("select").change(function() { 
     alert("you chose "+$(this).val()); 
    }); 
}); 
+0

爲什麼正確答案可以這麼簡單? (實際上,我很高興它不是比這更復雜)。這工作很好,並教我一些關於創作的順序。 – staypuffinpc