Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取具有相同数据属性的最后一个div_Javascript_Jquery_Html - Fatal编程技术网

Javascript 获取具有相同数据属性的最后一个div

Javascript 获取具有相同数据属性的最后一个div,javascript,jquery,html,Javascript,Jquery,Html,如何从具有相同数据id的div组中选择最后一个div? 我尝试使用.last和get-last div:contains,但不起作用 HTML: 你可以做一个选择器,选择元素,然后选择最后一个 console.log($('[data-id="' + id + '"]').last()) 形成一个物体。数据id是一个键,元素本身是一个值。循环后,对象中的每个项都指向具有“这样”数据id属性的最新元素: var dataIdsMap = {}; $(".rentals_reservation")

如何从具有相同数据id的div组中选择最后一个div? 我尝试使用.last和get-last div:contains,但不起作用

HTML:


你可以做一个选择器,选择元素,然后选择最后一个

console.log($('[data-id="' + id + '"]').last())

形成一个物体。数据id是一个键,元素本身是一个值。循环后,对象中的每个项都指向具有“这样”
数据id
属性的最新元素:

var dataIdsMap = {};
$(".rentals_reservation").each(function(i, value) {
        var id = $(value).attr("data-id").;
        dataIdsMap[id] = $(value);

    })
 console.log(dataIdsMap);

该逻辑获取所有id,将其缩减为唯一的id,最后为每个id找到最后一个元素

var$allReservations=$('.rentals_reservation');
console.log(
$allReservations.map(函数getHeids(){
返回此.getAttribute('data-id');
}).get().reduce(函数getTheUniqueIds(集合,元素){
if(collection.indexOf(element)<0)collection.push(element);
回收;
},[]).map(函数findTheLastElementForEachId(元素){
返回$allReservations.filter('[data id=“'+element+''“]]”)。last();
})
);

预约号码:3407
预约号码:3407
*预约号码:3407
订票号码:3227
订票号码:3227

*预订id:3227
问题并不完全清楚,但听起来您想从具有相同数据id的分区中选择所有最后的分区。例如,您用“*”标记的2

你可以:

  • 获取唯一的ID列表
  • 循环以返回元素
下面的代码段执行此操作并隐藏元素(以显示已选中这些元素)

//https://stackoverflow.com/a/33121880/2181514
var id=$(“.rentals_reservation”).map(函数(){return$(this.data(“id”);}).toArray();
var uniqueids=[…新集合(ids)]
var lastdivs=$(uniqueids).map(函数(){return$(“[data id=“+this+”]).last()[0]});
$(lastdivs.hide()

预约号码:3407
预约号码:3407
预约号码:3407*
订票号码:3227
订票号码:3227

预订id:3227*
要优化您的选择,我认为
数组可以帮助您,请查看以下演示,在该演示中,我开始在数组中存储每个
id
的唯一值,然后选择具有相同
id
的最后一个
div

var existingIds=[];
var selectedElements=[];
美元(“.rentals\u reservation”)。每个(功能(i,价值){
如果(!existingIds.includes($(value).data(“id”))
{
existingIds.push($(value.data(“id”));
selectedElements.push($(“.rentals_reservation[data id='”+$(value.data(“id”)+”]:last”);
}         
})
console.log(现有ID);
$。每个(选定的元素、函数(索引、元素){
log($(element.text());
})

1.预约编号:3407
2.预约编号:3407
3.预约编号:3407
1.预约编号:3227
2.预约编号:3227

3.预订id:3227
试试看。它可能会帮助你

var last=$(“.rentals_reservation”).last().data(“id”);
var值=[];
$(“.租金\预订”)。每个(功能(i、v){
if($(this).data(“id”)==最后一个){
value.push($(this.data(“id”));
}
})
console.log(值)
#结果{
颜色:#F00;
}

预约号码:3407
预约号码:3407
*预约号码:3407
订票号码:3227
订票号码:3227
*最后一个预约号码:3227



您知道需要哪个特定的数据id吗?或者您需要为所有数据id选择最后一个div吗?如果您只是选择最后一个div,它将是
$(“.rentals\u reservation”).last()
-无需手动循环。他正在寻找一种没有.last()操作的方法。last尝试了.last,但无法使其工作。但它确实解释了您的答案,谢谢您的澄清。关闭,但您从不存储元素。数组只保存数据id,其中有重复项。在这一过程之后检查数组不会产生id=3407的最后一个div,也不会产生id=3227的最后一个div,而是只产生34073227。好吧,这一个就像一个容易理解的符咒。谢谢:)最短最简单。
console.log($('[data-id="' + id + '"]').last())
var dataIdsMap = {};
$(".rentals_reservation").each(function(i, value) {
        var id = $(value).attr("data-id").;
        dataIdsMap[id] = $(value);

    })
 console.log(dataIdsMap);