2010-06-15 2 views
4

У меня есть зацикливание функция, создающая:заменить запятые с пробелами из массива JSon

<li id="id1" name="Tag1,Tag2,Tag3"> 
<li id="id2" name="Tag1,Tag2,Tag3"> 


$.each(data.posts, function(i, post){  
$('<li >', {id: this.id , name: post.tags}) 
}); 

Как заменить запятые между тегами с пробелами. Также есть способ, которым я могу отправить теги атрибуту «class» вместо «name». Кажется, он не работает в Safari.

ответ

10

То, что вы, вероятно, хотите, это:

$('<li >', {id: this.id , className : post.tags.join(' ')}) 

По умолчанию, когда вы разыгрываете массив в строку, то получите сцепленных с запятыми, как вы уже видели. Использование join() решит проблему.

Кроме того, class зарезервированное ключевое слово во всех браузерах (хотя некоторые из них не выдаст ошибку, если вы его используете), поэтому атрибут следует использовать для установки класса называется className

+0

Спасибо! отлично работает – Alex

+1

+1, 'class' является [будущим зарезервированным словом] (http://bclary.com/2004/11/07/#a-7.5.3), все из них следует избегать как идентификаторы ... – CMS

+0

Вышеприведенное предполагает, что теги представляют собой массив (который, по-видимому, находится в случае Алекса). Если теги являются строкой, вы могли бы сделать либо «tags.split (','). Join ('')" или "tags.replace (/,/g, '')" – broofa

1

Попробуйте это:

$.each(data.posts, function(i, post){ 
$('<li >', {id: this.id , name: post.tags.join(' ')}); 
}); 
0
$.each(data.posts, function(i, post) { 
    $('<li >', {id: this.id , name: post.tags.replace(/[,]/g, ' ')}) 
}); 
-1

Используйте заменяющий метод (как указано в других ответах) для замены запятых.

Что касается классов, добавьте их следующим образом:

$('<li >', {id: this.id }).addClass(post.tags.join(' ')); 
+0

Это заменит только первый ','. Чтобы заменить все, вам нужно передать регулярное выражение с опцией 'g', заданной как первый arg, как в моем комментарии выше. (И, конечно, это также предполагает, что тег - это String, а не массив) – broofa

+0

oops, я на самом деле не смотрел на эту часть, как уже упоминалось, я скопировал код сверху. AddClass - это правильный способ добавления классов, в отличие от атрибута «className», который я демонстрировал. Я скорректировал код, чтобы правильно конкретизировать теги, извините за это. – Jesse

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