2014-06-18 3 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 - вам следует больше внимания уделять комментарию Джона - это означало серьезно, и это поможет вам решить вашу проблему. –

ответ

0

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

без двойных кавычек оберточной значение атрибута, значение атрибута onclick является GetBlah('Text.

Я бы рекомендовал вместо этого использовать атрибут 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-кодом ,

Смежные вопросы