代码之家  ›  专栏  ›  技术社区  ›  Mohamad

如何使用jquery从HTML元素传递整个数据字符串?

  •  0
  • Mohamad  · 技术社区  · 15 年前

    我需要从HTML元素传递数据并将其序列化。目前,我可以通过在HTML标记中命名每个单独的属性来实现这一点。但它似乎冗长而复杂。

    <a data-type="2" data-post="101" data-parent="100">Up</a>
    var myData = $(this).data("type")+$(this).data("parent")+$(this).data("post")
    

    我可以通过一个调用传递所有数据,而不是命名每个单独的属性吗?例如:

    var myData = $(this).data(all the attributes go here in some sort of string/serialized string)
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Felix Kling    15 年前

    注释 :这需要jquery 1.4.4

    你可以这样做:

    var myData = $(this).data();
    var str = '';
    for(var i in myData) {
        if(myData.hasOwnProperty(i)) {
            str += myData[i];
        }
    }
    // generates "2101100"
    

    但是请注意 data() 可能会返回更多的HTML数据属性。

    DEMO

    根据您希望如何序列化数据,json.stringify也可以(它生成一个json字符串):

    var myData = $(this).data();
    var str = JSON.stringify(myData);
    // generates: {"type":2,"post":101,"parent":100}
    

    DEMO