我有一个事件处理程序,它将一个新行追加到表中。
$("#pre_script_12").change(function() {
$("#selected_pre_scripts")
.append("<tr><td><a href='javascript:moveScriptUp("
+ this.id
+ ")'>Move</a></td></tr>");
moveScriptUp()
看起来像这样:
function moveScriptDown(id) {
current = $("tr." + id).eq(1);
$(current).prev().before($(current).next());
$(current).prev().before($(current).next());
}
但是,将id
追加到tr.
时出现错误。
Error: Syntax error, unrecognized expression: tr.[object HTMLInputElement]
如何将id
作为参数提供给上述JavaScript函数,而不会在尝试在jQuery选择器中使用时出现此错误?
答案 0 :(得分:5)
您需要在函数调用中引用字符串。
现在,您的<a>
标记如下所示:
<a href='javascript:moveScriptUp(pre_script_12)'>Move</a>
在(大多数)浏览器中,所有元素ID都成为全局变量,因此pre_script_12
指的是元素。你需要添加引号,所以你要传递一个字符串:
$("#selected_pre_scripts")
.append("<tr><td><a href='javascript:moveScriptUp(\""
+ this.id
+ "\")'>Move</a></td></tr>");
P.S。我高度推荐, 不 使用内联JavaScript。为什么不绑定(委托的)事件处理程序来调用moveScriptUp()
函数?