我有这样的功能
$.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 :(得分:1)
您缺少属性值周围的引号,因此当其中有空格时,只会使用其中的一部分。
另外,为避免其他字符出现问题,您需要转义字符串中的某些字符,并对其他字符进行HTML编码。
处理这些问题的最简单方法不是创建HTML代码,而是直接创建元素:
var items = [];
$.each(data, function (i, t) {
items.push($('<div>').text(t.Text).click(function(){ GetBlah(t.Text); }));
});
现在,您可以追加元素数组,就像使用HTML代码附加字符串一样。
答案 1 :(得分: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');
});
无论哪种方式,请确保文本中的值没有双引号,或者确保将它们转义。