我尽我所能来实现它,但没有成功。
问题是我在运行时创建了一个元素,然后将一个函数绑定到该元素,如下面的代码:
$(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 code:
<div id="body">
<label class="rem">click me</label>
</div>
答案 0 :(得分:3)
您不希望在代码中的某个位置运行该功能,因此请删除()
:
$('#runtime').bind('click', func_name);
如果你正在使用jQuery 1.7+,你应该使用.on()
:
$('#runtime').on('click', func_name);
或直接使用.click()
处理程序:
$('#runtime').click(func_name);
答案 1 :(得分:3)
更改
$('#runtime').bind('click',func_name());
到
$('#runtime').live('click',func_name);
或(从jQuery 1.7开始):
$('#runtime').on('click',func_name);
有两点需要注意:
func_name()
更改为func_name
。绑定处理程序时,您不希望调用函数 - 您只想引用它。bind
对您没有任何帮助,因为#runtime
在您点击.rem
之后才会存在。这就是为什么你需要live
或on
(取决于你的jQuery版本)。只是为了衡量标准:here's一个很好的参考,说明你为什么要使用jQuery.on
。
答案 2 :(得分:0)
试试这个
$(document).ready(function(){
$('.rem').click(function(){
$('<a id="runtime" href="javascript:void(0);">runtime</a>').bind('click',func_name).appendTo("body");
});
});//End of doc
function func_name(){
alert('I got it!');
}
由于您在创建对象之前绑定了对象,因此无法获得所需的结果。