变量上的jQuery选择器?

时间:2013-10-10 19:24:52

标签: javascript jquery html ajax json

我是jQuery和JavaScript的新手,所以请耐心等待。我正在尝试执行一个AJAX get请求来检索我的JSON文件,其中包含的轨道信息的格式如下:

[
    {
        "name" : "Short Skirt, Long Jacket",
        "artist" : "Cake",
        "album" : "Comfort Eagle",
        "genre" : "Rock",
        "year" : 2001,
        "albumCoverURL" : "images/ComfortEagle.jpg",
        "bandWebsiteURL" : "http://www.cakemusic.com"
    },
    {
        ...
    }
]

我正在尝试使用这两个函数:

function loadJSON () 
{
    $.getJSON("lab4.json", updateHTML(result));
}

$(document).ready(function () 
{
    $("site").click(function () 
    {
        loadJSON();
    });
});

当用户点击ID为#34; site"的链接时我想发送一个异步javascript调用来检索我的JSON文件。成功后,它应该在这里调用我的updateHTML函数:

function updateHTML (result)
{
    var templateNode = document.getElementById("song-template").cloneNode(true);
    document.removeChild(getElementById("song-template"));

    $.each(result, function(i, song)
    {
        var songNode = templateNode.cloneNode(true);
    });
}

现在,我已经陷入困境:现在我有了这个克隆节点,如何使用jQuery填写HTML中的所有字段:

<a id="site" href="#"><img id="coverart" src="noalbum.png" /></a>
<h1 id="title"></h1>
<h2 id="artist"></h2>
<h2 id="album"></h2>
<p id="date"></p>
<ul id="genres"></ul>

通常,我会像:

$("site").attr("src","images/ComfortEagle.jpg");

但现在我遇到了两个问题。一,如何从我读过的JSON对象中获取新的url&#39; song&#39;,以及两个,我如何定位&#34; site&#34;在我将其添加回文档的html之前克隆的节点中的id?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以从密钥中连接ID

$.each(dataObj, function(key, val) {
    //dataObj is your returned JSON
    if ($("#" + key).length)
        $("#" + key).val(val);
});

答案 1 :(得分:0)

首先,如果你要使用jquery,请使用jquery。

您可以使用ejquery clone()方法而不是js cloneNode来实现此目的。

SEE THIS FIDDLE

我认为这是你尝试用更多jquery ish解决方案做的事情。

var song = [1,2,3,4];

var templateNode = $("#lala");
$.each(song, function(key, val){
   var songNode = templateNode.clone(true);
    songNode.children('span.yo').text(val);
    $('#wrap').append(songNode);
});

对于json解析的AS,在每次迭代时,你应该能够像任何其他json一样访问道具,所以在每个循环中,只需定位一个道具,如:

song.albumCoverURL