我尽了一切努力去实现它,但没有成功。
问题是我在运行时创建一个元素,然后将一个函数绑定到该元素,如下代码所示:
$(document).ready(function() {
$('.rem').click(function() {
$("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>');
});
$('#runtime').bind('click', func_name());
});
//End of doc
function func_name() {
alert('I got it!');
}
在 HTML 代码中,我有一个如下所示的标签:
<div id="body">
<label class="rem">click me</label>
</div>
我的第二次尝试
$(document).ready(function() {
$('.rem').click(function() {
$("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>');
});
$('#runtime').bind('click',function() {
alert($(this).text());
});
});
//End of doc
HTML 代码:
<div id="body">
<label class="rem">click me</label>
</div>
Change
$('#runtime').bind('click',func_name());
to
$('#runtime').live('click',func_name);
或(从 jQuery 1.7 开始):
$('#runtime').on('click',func_name);
需要注意两点:
- 我变了
func_name()
to func_name
。你不想call当您绑定处理程序时的函数 - 您只想引用它。
- Calling
bind
对你没有任何好处,因为#runtime
在您点击之后才存在.rem
。这就是为什么你需要live
or on
(取决于您的 jQuery 版本)。
只是为了更好的衡量:here's关于为什么你应该使用的一个很好的参考jQuery.on
anyway.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)