2014-06-18 41 views
0

我有這樣如何傳遞字符串與空白作爲參數在jQuery中?

$.get("/Test/GetTest/" + form, function (data) { 
       var items = ""; 

       $.each(data, function (i, t) { 
        items += "<div onclick =" + "GetBlah(' " + t.Text + "')" + ">" + t.Text + "</div>"; 
       }); 
... 

function GetBlah(s) // if t.Text got whitespace it throws me error 
{ 
    ... 
} 

如何傳遞字符串空白jQuery中起作用的功能?

+0

您正在生成無效的HTML。沒有更多,沒有更多。 – Jon

+0

@Jon感謝您的回覆。有沒有解決方案來傳遞字符串與空白? – Lakhae

+0

@Lakhae - 你應該更多地關注Jon的評論 - 這意味着認真,它會幫助你解決你的問題。 –

回答

0

<div onclick=GetBlah('Text with a space')></div

沒有雙引號包裹屬性值,該onclick屬性的值是GetBlah('Text

HOwever,我會建議改爲使用data-屬性來保存文本並綁定一個點擊處理程序,該處理程序從該處處理該值。

items += '<div class="text-div" data-text="' + t.Text + '">' + t.Text + '</div>'; 

$(document).on('click', '.text-div', function() { 
    var text = $(this).data('text'); 
}); 

無論哪種方式,確保文本沒有雙引號的值,或一定要逃離他們。

1

您缺少屬性值的引號,因此只有部分空間在其中。

此外,爲避免其他字符出現問題,您需要轉義字符串中的某些字符,並將HTML編碼爲其他字符。

來處理這些問題,最簡單的方法是完全不創建HTML代碼,而是直接創建元素:

var items = []; 
$.each(data, function (i, t) { 
    items.push($('<div>').text(t.Text).click(function(){ GetBlah(t.Text); })); 
}); 

現在,您可以附加元件的陣列,就像你追加的HTML代碼字符串。

相關問題