[英]JQuery loop through dynamic elements and get data-value
我正在嘗試使用可折疊面板來完成我的要求
$(".sport").on("click", function() { var thisId = $(this).attr("id"); var thisChildren = $(this) + ".sportlist"; $(thisChildren).each(function(index) { }); });
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet" /> <div style="height:600px;padding:0px;margin:0px;"> <div class="col-md-3 scroll-container" style="padding:0px;"> <div class="panel-group" id="accordionMenu" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab"> <h4 class="panel-title"> <a class="sport collapsed" role="button" data-toggle="collapse" data-parent="#accordionMenu" href="#collapse1" aria-expanded="true"> <small><i class="more-less glyphicon glyphicon-chevron-right"></i></small> Cricket (2 items) </a> </h4> </div> <div class="panel-collapse collapse" id="collapse1" role="tabpanel" style="height: 0px;"> <div class="sportlist" data-value="1"> Sachin </div> <div class="sportlist" data-value="2"> Kohli </div> </div> <div class="panel-heading" role="tab"> <h4 class="panel-title"> <a class="sport collapsed" role="button" data-toggle="collapse" data-parent="#accordionMenu" href="#collapse2" aria-expanded="true"> <small><i class="more-less glyphicon glyphicon-chevron-right"></i></small> Other (2 items) </a> </h4> </div> <div class="panel-collapse collapse" id="collapse2" role="tabpanel" style="height: 0px;"> <div class="sportlist" data-value="3"> Bob </div> <div class="sportlist" data-value="4"> Willson </div> </div> </div> </div> </div> </div>
我需要的是,當我單擊 Cricket 時,我需要將data-value
存儲到一個數組中。 我嘗試了一些東西,但無法完成
$(".sport").on("click", function() { var thisId = $(this).attr("id"); var thisChildren = $(this) + ".sportlist"; $(thisChildren).each(function(index) { }); });
使用a
中的href
和$.map
:
$(".sport").on("click", function() { let id = $(this).attr("href"), list = $.map($(id).find(".sportlist"), function(item){ return $(item).data("value") }) console.log(list) });
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet" /> <div style="height:600px;padding:0px;margin:0px;"> <div class="col-md-3 scroll-container" style="padding:0px;"> <div class="panel-group" id="accordionMenu" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab"> <h4 class="panel-title"> <a class="sport collapsed" role="button" data-toggle="collapse" data-parent="#accordionMenu" href="#collapse1" aria-expanded="true"> <small><i class="more-less glyphicon glyphicon-chevron-right"></i></small> Cricket (2 items) </a> </h4> </div> <div class="panel-collapse collapse" id="collapse1" role="tabpanel" style="height: 0px;"> <div class="sportlist" data-value="1"> Sachin </div> <div class="sportlist" data-value="2"> Kohli </div> </div> <div class="panel-heading" role="tab"> <h4 class="panel-title"> <a class="sport collapsed" role="button" data-toggle="collapse" data-parent="#accordionMenu" href="#collapse2" aria-expanded="true"> <small><i class="more-less glyphicon glyphicon-chevron-right"></i></small> Other (2 items) </a> </h4> </div> <div class="panel-collapse collapse" id="collapse2" role="tabpanel" style="height: 0px;"> <div class="sportlist" data-value="3"> Bob </div> <div class="sportlist" data-value="4"> Willson </div> </div> </div> </div> </div> </div>
這是另一種不使用 id 的方法
$(".sport").click(function () { let ids = $.map($(this).closest(".panel-heading").next(".panel-collapse").find(".sportlist"), function (element) { return $(element).data("value") }); console.log(ids) });
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.js"></script> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.css" rel="stylesheet" /> <div style="height:600px;padding:0px;margin:0px;"> <div class="col-md-3 scroll-container" style="padding:0px;"> <div class="panel-group" id="accordionMenu" role="tablist" aria-multiselectable="true"> <div class="panel panel-default"> <div class="panel-heading" role="tab"> <h4 class="panel-title"> <a class="sport collapsed" role="button" data-toggle="collapse" data-parent="#accordionMenu" href="#collapse1" aria-expanded="true"> <small><i class="more-less glyphicon glyphicon-chevron-right"></i></small> Cricket (2 items) </a> </h4> </div> <div class="panel-collapse collapse" id="collapse1" role="tabpanel" style="height: 0px;"> <div class="sportlist" data-value="1"> Sachin </div> <div class="sportlist" data-value="2"> Kohli </div> </div> <div class="panel-heading" role="tab"> <h4 class="panel-title"> <a class="sport collapsed" role="button" data-toggle="collapse" data-parent="#accordionMenu" href="#collapse2" aria-expanded="true"> <small><i class="more-less glyphicon glyphicon-chevron-right"></i></small> Other (2 items) </a> </h4> </div> <div class="panel-collapse collapse" id="collapse2" role="tabpanel" style="height: 0px;"> <div class="sportlist" data-value="3"> Bob </div> <div class="sportlist" data-value="4"> Willson </div> </div> </div> </div> </div> </div>
jQuery 關閉- 對於集合中的每個元素,通過測試元素本身並遍歷其在 DOM 樹中的祖先來獲取與選擇器匹配的第一個元素。
jQuery next - 獲取匹配元素集中每個元素的緊隨其后的兄弟。 如果提供了選擇器,則僅當它與該選擇器匹配時,它才會檢索下一個兄弟。
jQuery 查找- 獲取當前匹配元素集中每個元素的后代,由選擇器過濾,jQuery object 或元素。
jQuery map - Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.