我有一个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