Jquery 通过捕获数据属性创建对象数组
我做了一把小提琴 我正在体验数组,但似乎只输出第一个对象 请给我一些建议,谢谢 我的jqueryJquery 通过捕获数据属性创建对象数组,jquery,arrays,collections,Jquery,Arrays,Collections,我做了一把小提琴 我正在体验数组,但似乎只输出第一个对象 请给我一些建议,谢谢 我的jquery $("a.download-all").on('click', function () { var downloads = $('a[data-download]').attr('data-download'); // This is the example output of the data in the variable... $('#varObj').html(
$("a.download-all").on('click', function () {
var downloads = $('a[data-download]').attr('data-download');
// This is the example output of the data in the variable...
$('#varObj').html(downloads);
});
我的脚本
<div id="images">
<a href="#" data-download="http://image.com/1.jpg"><img src="images/x.gif" alt=""/></a>
<a href="#" data-download="http://image.com/2.jpg"><img src="images/x.gif" alt="" /></a>
<a href="#" data-download="http://image.com/3.jpg"><img src="images/x.gif" alt=""/></a>
<a href="#" data-download="http://image.com/4.jpg"><img src="images/x.gif" alt="" /></a>
<a href="#" data-download="http://image.com/5.jpg"><img src="images/x.gif" alt=""/></a>
<a href="#" data-download="http://image.com/6.jpg"><img src="images/x.gif" alt="" /></a>
<div>
<p><a href="#" class="download-all">Download all images</a></p>
<p id="varObj"></p>
jQuery的attr()
将作为“getter”()返回匹配的第一个元素的值;这就是为什么你只看到一个
使用迭代匹配对象,或使用
调用集合的attr()将只返回第一个attr()。另外,使用data()
,因为它更易于阅读
因此,代码只是创建一个空数组,然后使用each
将每个项目的下载值推送到数组中。代码的其余部分是相同的
$("a.download-all").on('click', function ()
{
var downloads = [];
$('a[data-download]').each(function()
{
downloads.push( $(this).data('download') );
});
// This is the example output of the data in the variable...
$('#varObj').html(downloads);
});
我认为map()非常适合这种情况。干得好!真不敢相信我没想到地图。也谢谢。还有关于数据的提示,永远忘了这一点。还有更新我的标题:-)你把我最喜欢的答案剪得更细了!虽然这有点奇怪-不工作的原因。。。打字错误:download'))
extra括号
var downloads = [] ;
$("a.download-all").on('click', function () {
$('a[data-download]').each(function(){
downloads.push( $(this).attr('data-download') );
});
$('#varObj').html(downloads);
});
$("a.download-all").on('click', function ()
{
var downloads = [];
$('a[data-download]').each(function()
{
downloads.push( $(this).data('download') );
});
// This is the example output of the data in the variable...
$('#varObj').html(downloads);
});
var downloads = $('a[data-download]').map(function(){
return $(this).data('download');
});
$("#varObj").html(downloads.join("-"));