我正在尝试调用一个函数,但是在正确转义值并正确传递它时遇到了一些困难。我目前有:
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
变量中有空格(多个类)。
答案 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'))
);
}
});
答案 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()”。