获取以“x”开头的所有ID

时间:2013-04-27 22:19:25

标签: jquery

我正试图在页面上输出元素:

$('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”等,

提前致谢!

3 个答案:

答案 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());
  });
});