【问题标题】:replace commas with spaces from json array用json数组中的空格替换逗号
【发布时间】:2010-06-15 02:21:44
【问题描述】:

我有一个循环函数创建:

<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})  
});

如何用空格替换标签之间的逗号。 还有一种方法可以将标签发送到“类”属性而不是“名称”。它似乎在 Safari 中不起作用。

【问题讨论】:

    标签: javascript jquery json


    【解决方案1】:

    你可能想要的是这个:

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

    默认情况下,当您将数组转换为字符串时,它会用逗号连接,如您所见。使用join() 即可解决问题。

    另外,class 是所有浏览器中的保留关键字(虽然有些使用它不会抛出错误),所以你应该用于设置类的属性称为 @ 987654325@

    【讨论】:

    • +1, classfuture reserved word 所有这些都应该避免作为标识符...
    • 以上假设标签是一个数组(显然是在 Alex 的情况下)。如果 tags 是一个字符串,你可以做 "tags.split(',').join(' ')" 或 "tags.replace(/,/g, ' ')"
    • 你也可以用'class'作为键,加上引号
    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:
      $.each(data.posts, function(i, post) {
          $('<li >', {id: this.id , name: post.tags.replace(/[,]/g, ' ')})
      });
      

      【讨论】:

        【解决方案4】:

        使用替换字符串方法(在其他回复中提到)替换逗号。

        至于类,像这样添加它们:

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

        【讨论】:

        • 这只会替换第一个','。要全部替换,您需要传递一个将“g​​”选项设置为第一个参数的正则表达式,如我上面的评论中所示。 (当然,这也假设标签是一个字符串,而不是一个数组)
        • 哎呀,我实际上并没有看过那部分,如上所述,我从上面复制了代码。 addClass 是添加类的正确方法,而不是我所演示的“className”属性。我已调整代码以正确连接标签,对此感到抱歉。
        猜你喜欢
        • 2015-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        • 2017-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多