我的Javascript就是这样
$('button').click(function(){
//load the data and place inside to #content
});
$('#id-from-data-that-load').click(function(){
//Do some action
});
所以这是html标签
<button>Load</button>
<div id="content">
//Empty Data
</div>
按钮LOAD点击html时会像这样
<button>Load</button>
<div id="content">
<div id="id-from-data-that-load">
content that load
</div>
</div>
但是,当我点击div id-from-data-load时,该功能将无法运行。
如何解决?
答案 0 :(得分:1)
您需要使用live来代替div事件。这是它应该是什么:
$('#id-from-data-that-load').live("click", function(){
//Do some action
});
或者您也可以这样做:
var submitted = false;
$('button').click(function(){
// If the button was clicked before, we don't submit again.
if (submitted == true) { return false; }
// Set submitted to true, so when user clicks the button again,
// this operation will not be processed one more time.
submitted = true;
//load the data and place inside to #content
$.post("/getdata", {}, function(response) {
//after the load happened we will insert the data into the div.
$("#content").html(response);
// Do the bindings here.
$('#id-from-data-that-load').click(function(){
//Do some action
});
});
return false;
});
答案 1 :(得分:0)
尝试:
$('#id-from-data-that-load').live("click", function() {
alert($(this).attr("id");
});
答案 2 :(得分:0)
您需要通过.live
处理程序或.delegate
处理程序将事件绑定到在运行时加载的元素。那是因为当你将事件绑定到元素时它们不存在于dom中。所以.live和.delegate会帮助你实现这一目标。参见@ shree的回答中的例子
答案 3 :(得分:0)
在内容中加载数据后绑定id-from-data-load。
$('button').click(function(){
//load the data and place inside to #content
$('#id-from-data-that-load').click(function(){
//Do some action
});
});
答案 4 :(得分:0)
绑定LI时,您可以将函数名称硬编码到onclick属性中。
<li onclick="myFunction">Blah Blah Blah</li>