0

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

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注意:变量中有空格(多个类)。

4

2 回答 2

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'))
        );
    }
});

相关博文

于 2012-06-26T23:12:43.767 回答
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');

它是“类名”作为属性。在 jQuery 1.6 之后,您很少需要“.attr()”而不是“.prop()”。

于 2012-06-26T23:13:30.757 回答