2010-06-15 9 views
4

에서 쉼표를 공백으로 대체 I 루핑 기능 만들기 있습니다는 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}) 
}); 

가 어떻게 공백으로 태그 사이에 쉼표를 교체하는합니다. 또한 "이름"대신 "클래스"속성에 태그를 보낼 수있는 방법이 있습니다. 사파리에서는 작동하지 않는 것 같습니다.

답변

10

은 당신이 아마 원하는 것은 이것이다 : 당신이 문자열 배열을 캐스팅 할 때 본 것처럼

기본적으로
$('<li >', {id: this.id , className : post.tags.join(' ')}) 

는, 그것은 쉼표로 연결된 얻을. join()을 사용하면 문제가 해결됩니다.

또한, class 모든 브라우저 에서 예약 된 키워드 (당신이 그것을 사용하는 경우 일부 오류가 발생하지 않지만)이다, 그래서 당신은 클래스를 설정하기 위해 사용해야하는 속성은

+0

감사합니다! 완벽하게 작동합니다 – Alex

+1

+1,'class'는 [미래의 예약어]입니다. (http://bclary.com/2004/11/07/#a-7.5.3) 그들 모두는 식별자로서 피해야합니다 ... – CMS

+0

위의 태그는 배열입니다 (이것은 분명히 Alex의 경우입니다). tags가 문자열이면 "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
className라고

쉼표 대신 바꿀 문자열 메서드를 사용합니다 (다른 응답에서 언급 한 것처럼).

클래스에 관해서는,이 같은 추가 :

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

이것은 첫 번째 ','를 대체합니다. 모두를 바꾸려면 위의 내 코멘트에서와 같이 첫 번째 arg로 'g'옵션을 설정 한 정규식을 전달해야합니다. (그리고 물론 이것은 태그가 배열이 아니라 String이라고 가정합니다.) – broofa

+0

oops, 나는 실제로 위에서 언급 한 부분을 보지 않았습니다. 위에서 언급 한 코드를 복사했습니다. addClass는 "className"속성과 반대로 클래스를 추가하는 올바른 방법이며, 이는 제가 시연했던 것입니다. 태그를 올바르게 연결하도록 코드를 조정했습니다. 죄송합니다. – Jesse