获取“ID”和“HREF”属性并创建JSON对象

时间:2016-06-16 10:39:36

标签: javascript jquery json

我有一个dinamically生成的代码,如下所示,列出了一些文件,让用户点击链接删除它们:

<div id="filenames">
    <div>
        <a id="1" class="delete" href="#1984.xls">1984.xls
    </div>
    <div>
        <a id="2" class="delete" href="#1984.xml">1984.xml
    </div>
</div>

每个文件都有自己的ID。当用户上传文件时,该列表通过AJAX生成。

当用户点击链接时,在将文件传递给“delete.php”调用之前,我希望有一个JSON对象列出所有这样的文件:

{1 : 1984.xls, 2 : 1984.xml}

我设法使用数组

var files = [];

$('#filenames').find('a').each(function() {
    files.push($(this).attr('href'));
});

但这只是在数组中添加了存储在href内的文件名。

我不知道如何find同时idattr如何创建JSON对象而不是数组。

4 个答案:

答案 0 :(得分:2)

您可以通过以下方式执行此操作:

var files = {};

$('#filenames').find('a').each(function() {
    files[$(this).attr('id')] = $(this).attr('href');
});

console.log(files);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="filenames">
    <div>
        <a id="1" class="delete" href="#1984.xls">1984.xls
    </div>
    <div>
        <a id="2" class="delete" href="#1984.xml">1984.xml
    </div>
</div>

答案 1 :(得分:1)

  

key动态时,使用bracket-notation为对象指定值!

files初始化为object({}),而不是array,因为您希望结果为object

注意: 如果您想从字符串中删除.substr(1);,请使用#(first character)

&#13;
&#13;
var files = {};
$('#filenames').find('a').each(function(i) {
  //files[i] = $(this).attr('href').substr(1);;//For index iteration as key
  files[this.id] = $(this).attr('href').substr(1); //For ID attribute as key
});
console.log(files);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="filenames">
  <div>
    <a id="1" class="delete" href="#1984.xls">1984.xls</a>
  </div>
  <div>
    <a id="2" class="delete" href="#1984.xml">1984.xml</a>
  </div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您必须使用object(而不是{} array)创建[],然后在key:value时将其files[key] = value影响为key id是链接的valuehref代表的var files = {}; $('#filenames').find('a').each(function() { var key = $(this).attr('id'); var value = $(this).attr('href'); files[key] = value; }); console.log(files);,请查看以下示例。

希望这有帮助。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="filenames">
    <div>
        <a id="1" class="delete" href="#1984.xls">1984.xls
    </div>
    <div>
        <a id="2" class="delete" href="#1984.xml">1984.xml
    </div>
</div>
&#13;
function getCookiesMap(cookiesString) {
  return cookiesString.split(";")
    .map(function(cookieString) {
        return cookieString.trim().split("=");
    })
    .reduce(function(acc, curr) {
        acc[curr[0]] = curr[1];
        return acc;
    }, {});
}
&#13;
&#13;
&#13;

答案 3 :(得分:0)

请尝试此代码

var files = [];
item = {}
$('#filenames').find('a').each(function () {
    item[$(this).attr('id')] = $(this).attr('href');

});
files.push(item);
console.log(files);