2012-06-26 50 views
0

我正在嘗試調用一個函數,但遇到了一些正確轉義值並正確傳遞值的問題。我目前有:未捕獲的SyntaxError將多個值傳遞給函數

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變量(多類)的空間。

回答

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()」。

+0

非常好,非常感謝您的幫助。 – David542

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