我有一個div標記的網頁,我不同視圖加載到使用jQuery .load()訪問HTML元素加載與jQuery .load()
<div class="main-content">
<div id="load"></div>
</div>
當我加載像下面的不同視圖,我不能從settings.html
$("#settings").click(function(){
$("#load").load("main/settings.html");
//not working
$("#test1").click(function(){
alert('hello');
});
});
訪問任何元素按照第二個答案中this後:
事件處理程序僅綁定到當前選定的元素;他們 必須存在於你的代碼,使通話時間在頁面上...
所以,我提出我的.click()
代碼,目前正在加載的頁面(settings.html在這種情況下),我可以訪問settings.html中的元素。或者,我可以做的建議類似的代碼發佈
$("#settings").click(function(){
$("#load").load("main/settings.html", function(){
$("#test1").click(function(){
alert('hello');
});
});
});
//or
$("#settings").click(function(){
$("#load").load("main/settings.html");
$(document).on("click","#test1",function(event){
alert('hello');
});
});
但我想知道如何綁定的所有元素假設我不知道哪些時間提前。在上面的例子中,我知道我需要綁定#test1
id。但是,如果我有一個像play.js
這樣的文件,我在一個加載的頁面上更改不同的東西,上面列出的方法將要求我將代碼與play.js
分開,並將每個代碼放入與加載事件相關的函數中。我有很多事件,並希望我的js像.click()
等在一個單獨的文件。
我該如何綁定全部加載時未提前指定它們的元素?或者,我該怎麼辦告訴jQuery來執行類似:
$("#settings").click(function(){
$("#load").load("main/settings.html", function(){
// pseudo code
(function(){
bind all elements from main/settings.html to DOM
});
});
});
所以在它之後列出這樣可以訪問thoese元素的腳本。
<script src="../js/play.js"></script>
你檢查過了嗎? http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements – Dario
是的,這是在我原來的職位。我更新了我的帖子,嘗試改進問題。 – jtlindsey