1

我正在尝试通过以下方式获取页面上元素的输出:

$('a#exportPage').on('click',function(){
ExportIds = $('[id^="appendHeading"]').attr('id');
ExportTexts = $('[id^="appendHeading"]').text();
$("#PrintIds").append("ObjectID:"+ExportIds+"Content:"+ExportTexts);
});

但它只获得“最后一个 ID”,而不是全部。我以前遇到过这个麻烦,需要把它放在我的脑海里!

我希望输出为“ObjectID:appendHeading,Content:Texts,ObjectID:appendHeading,Content:Texts”等,

提前致谢!

4

3 回答 3

1

可能你需要这样的东西:

$('a#exportPage').on('click', function () {
  $('[id^="appendHeading"]').each(function () {
    $("#PrintIds").append('ObjectID: ' + $(this).attr('id') + 'Content: ' + $(this).text());
  });
});
于 2013-04-27T22:22:33.170 回答
0

如果要多次使用它们,则应始终在变量中缓存带有慢速选择器的 jQuery 对象。所以我将它缓存在一个名为$els. 然后我做了一个调整,因为attr只返回第一个匹配元素的属性,而text返回一个字符串而不是字符串数组。我使用map创建一个包含所需值的 jQuery 对象,然后使用get将该 jQuery 对象转换为数组:

$('a#exportPage').on('click',function(){
    var $els = $('[id^="appendHeading"]');
    ExportIds = $els.map(function(){
        return this.id;
    }).get();
    ExportTexts = $els.map(function(){
        return $(this).text();
    }).get();
    $("#PrintIds").append("ObjectID:"+ExportIds+"Content:"+ExportTexts);
});

如果您尝试输出每个 id、文本对而不是所有 id 后跟所有文本,您可能希望像这样进一步重写它​​:

$('a#exportPage').on('click',function(){
    var textMap = {};
    $('[id^="appendHeading"]').each(function(){
        textMap[this.id] = $(this).text();
    });
    for(id in textMap)
        $("#PrintIds").append("ObjectID:" + id + "Content:" + textMap[id]);
});

甚至:

$('a#exportPage').on('click',function(){
    $('[id^="appendHeading"]').each(function(){
        $("#PrintIds").append("ObjectID:" + this.id + "Content:" + $(this).text());
    });
});
于 2013-04-27T22:22:43.500 回答
0

使用每个()。

$('a#exportPage').on('click',function(){
  var PrintIds = $('#PrintIds');
  $('[id^="appendHeading"]').each(function() {
    PrintIds.append('ObjectID:'+$(this).attr('id')+'Content:'+$(this).text());
  });
});
于 2013-04-27T22:36:05.380 回答