我有一段jQuery代码,它将一个输入按钮附加到正文,然后为它分配一个onclick函数。要调用的函数已在别处定义,并且接受两个参数,这些参数是之前定义的变量。
这是我目前正在使用的代码:
$("body").append("<input type='submit' value='foo' onclick='foo(\'" + argument1 + "\',\'" + argument2 + "\'/>");
然而,当我尝试点击按钮时,我收到错误(在Chrome中)说:未捕获的SyntaxError:意外的令牌}。
任何人都可以帮助我吗?
答案 0 :(得分:5)
您应该使用jQuery分配点击处理程序:
var input = $('<input type="submit" value="foo" />')
.click(function() { foo(argument1, argument2); })
.appendTo(document.body);
请注意,这将通过引用捕获参数变量。
答案 1 :(得分:3)
您尚未关闭onclick中的foo()函数
答案 2 :(得分:1)
假设argument1 == '1'
和argument2 == '2'
,您的.append
会提供
<input type='submit' value='foo' onclick='foo('1','1'/>
这显然不是有效的HTML。要解决它,你应该使用
.append("<input ... onclick='foo(\"" + argument1 + "\",\"" + argument2 + "\")'/>")
但这不是使用jQuery的正确方法。有关更好的代码,请参阅@SLaks's answer。