未捕获的SyntaxError将多个值传递给函数

时间:2012-06-26 23:07:44

标签: javascript jquery

我正在尝试调用一个函数,但是在正确转义值并正确传递它时遇到了一些困难。我目前有:

function selectdone(sel, title_id, status_type) {
...
}

$(function() {


$("td.status-updates").click(function() {
    if ($(this).find('#sel').length == 0) {
        var before = $(this).text();
        var title_id = $(this).parent().attr('id');
        var status_type = $(this).attr('class');
        $(this).html("<select id='sel' 
            onchange='selectdone(this," + title_id + "," + status_type +");'...
                                                <option>NS</option></select>");
    }

});

我从中得到的错误是Uncaught SyntaxError: Unexpected identifier

但是,如果我将其作为'selectdone(this," + title_id + ");...传递它可以正常工作,但如果我尝试传递三个则会引发该错误。

注意:status_type变量中有空格(多个类)。

2 个答案:

答案 0 :(得分:2)

jQuery具有用于处理事件和操作DOM的强大内置工具;我建议你使用那些。

$("td.status-updates").click(function() {
    if ($(this).find('#sel').length == 0) {
        var before = $(this).text();
        var title_id = $(this).parent().attr('id');
        var status_type = $(this).attr('class');
        $(this).empty().append(
            $('<select>').prop('id', 'sel')
            .on({
                change: function() {
                    selectdone(this, title_id, status_type);
                }
            })
            .append($('<option>').text('NS'))
        );
    }
});

Relevant blog post

答案 1 :(得分:1)

从上一个问题重复一遍:

$(this).html($("<select/>", {
  id: 'sel',
  change: function() {
    selectdone(this, title_id, status_type);
  }
}).append($("<option/>", { text: "NS" })));

另外,要获得“类”,使用“.prop()”可能更好:

var status_type = $(this).prop('className');

它是“className”作为属性。发布jQuery 1.6,你真的很想要“.attr()”而不是“.prop()”。