2012-06-22 120 views
0

我一直在做一个简单的jQuery数据()测试。但是它返回undefined。它适用于jsfiddle虽然(http://jsfiddle.net/yrCdj/)。jquery data()返回undefined

我有一个Jinja2的循环,其填充一个div,我想用一些元数据以备后用添加标签:

{% for s in siteInfo[:markers[0]] %} 
<div class="sitebox2"> 
<script> 
$(".sitebox2:last").append('<a href="/sites/d?siteid={{s[5]}}">{{s[0]}}</a><br>Distance     from {{loc}} is {{s[6]}} km.<br>'); 
$(".sitebox2:last").data('fruit', 'apple'); 
</script> 

</div> 
{% endfor %} 

然后我尝试把这个数据来测试它是否工作:

<script type="text/javascript"> 
$(".sitebox2").each(function(k, v) { 
    var f = $(v).data('fruit'); 
alert(f); 
}); 

</script> 

它返回未定义。有什么想法出错?它看起来像一个范围问题,所以也许我需要找到一种方法直接从DOM获取数据。

回答

0

尝试在关闭div标记后执行脚本。

{% for s in siteInfo[:markers[0]] %} 
<div class="sitebox2"> 
    <a href="/sites/d?siteid={{s[5]}}">{{s[0]}}</a><br>Distance from {{loc}} is {{s[6]}} km.<br> 
</div> 
<script> 
    $(".sitebox2:last").data('fruit', 'apple'); 
</script> 
{% endfor %} 

或者你可以使用data属性,如:

{% for s in siteInfo[:markers[0]] %} 
<div class="sitebox2" data-fruit="apple"> 
    <a href="/sites/d?siteid={{s[5]}}">{{s[0]}}</a><br>Distance from {{loc}} is {{s[6]}} km.<br> 
</div> 
{% endfor %}