我正试图在页面上输出元素:
$('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”等,
提前致谢!
答案 0 :(得分:1)
可能你需要这样的东西:
$('a#exportPage').on('click', function () {
$('[id^="appendHeading"]').each(function () {
$("#PrintIds").append('ObjectID: ' + $(this).attr('id') + 'Content: ' + $(this).text());
});
});
答案 1 :(得分: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());
});
});
答案 2 :(得分:0)
使用每个()。
$('a#exportPage').on('click',function(){
var PrintIds = $('#PrintIds');
$('[id^="appendHeading"]').each(function() {
PrintIds.append('ObjectID:'+$(this).attr('id')+'Content:'+$(this).text());
});
});