这是我的问题:
我正在动态创建一个带有onclick功能的按钮,如下所示:
$("#test).html('<input type="button" value="Close" onclick="remove('+param1+','+param2+');" />');
参数读得很好但功能不是触发器,我收到此错误信息: 当bob是param1的字符串值时,“bob未定义”。
显然,当它应该被读作字符串时,bob被读作变量,但我不明白为什么。
非常感谢你的帮助!
答案 0 :(得分:5)
那是因为这个字符串就在这里:
'onclick="remove('+param1+','+param2+');"'
最终会看起来像这样:
'onclick="remove(foo, bar);"'
您可能希望它看起来像这样:
'onclick="remove(\'foo\', \'bar\');"'
所以改成它:
'onclick="remove(\''+param1+'\', \''+param2+'\');"'
你也可以这样做:
$("#test").html('<input type="button" value="Close" />').find('input[type=button]').click(function () {
remove(param1, param2);
});
编辑:我还注意到你错过了一个“来自你的$() - 来电:$("#test)
应该是$("#test")
。
答案 1 :(得分:0)
我可以建议你这个
<script type="text/javascript">
//<![CDATA[
var i = 0;
$(function () {
$("#lnkAdder").click(function () {
// appending new item
$("#Container").append(
$("<a>").attr({ "href": "javascript:;" }).text("Click me").click(function () {
var data = ++i;
alert("I'm clicked, I'm number " + data);
})
);
});
});
//]]>
</script>
<a href="javascript:;" id="lnkAdder">Add item</a>
<div id="Container"></div>
这里的关键是javascript闭包。
正如您所见,有一个名为lnkAdder
的链接。它负责将新项目添加到容器中。单击它会将新项目附加到容器中。在附加您使用jQuery API并创建新元素时,添加属性并添加事件侦听器。在事件侦听器正文中,您将值复制到内部变量中。他们酌情使用它。