jQuery选择器中使用的函数参数

时间:2015-07-23 20:01:26

标签: javascript jquery

我有一个事件处理程序,它将一个新行追加到表中。

$("#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选择器中使用时出现此错误?

1 个答案:

答案 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()函数?