如何在jquery中将带有空格的字符串作为参数传递?

时间:2014-06-18 19:06:27

标签: 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中的函数?

2 个答案:

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

无论哪种方式,请确保文本中的值没有双引号,或者确保将它们转义。