簡體   English   中英

使用li項目中的javascript獲取數據屬性檢索的ID

[英]Get id's retrieved by data attribute using javascript from li items

JavaScript的


var sessions = [];
$('.rightDiv').each(function(index) {
    var session = $.trim($(this).text().slice(0, -1)).split("×");
    var sessionData = [];
    for (var i = 0; i < session.length; i++) {
        var ids = $(this).find('li').data('id');
        var s = {
            subjectOrder: i,
            subjectID: ids
        };
        sessionData.push(s);
    }
    var ses = {
        sessionNo: index,
        sessionData: sessionData
    };
    sessions.push(ses);
});

HTML


 <ul id="form_builder_sortable_sample" class="sortable rightDiv session4 ui-sortable"> 
  <li class="draggable" data-id="1" name="Counting" >Counting<button onclick="deleteElement(event)" class="delbtn">×</button></li>
  <li class="draggable" data-id="2" name="Priorities" >Priorities" class="delbtn">×</button></li>
 </ul>

JSON


{"sessionNo":"0","sessionData":[{"subjectOrder":"0","subjectID":"1"},{"subjectOrder":"1","subjectID":"1"}]}


我的問題


上面的代碼所做的是從ul類中檢索會話號: class="sortable rightDiv session4"並從data-id檢索li的每個data-id

在這種情況下,它在li項之間循環良好,但僅顯示第一個li元素的id。 它應該是:

{"sessionNo":"0","sessionData":[{"subjectOrder":"0","subjectID":"1"},{"subjectOrder":"1","subjectID":"2"}]}

知道有什么問題嗎?

由於您正在使用$(this).find('li').data('id'); ,它將始終返回第一個li數據屬性的值。

使用.each()迭代並創建一個數組

var sessionData = [];

$(this).find('li').each(function (index, elem) {
    sessionData.push({
        subjectOrder: index,
        subjectID: $(elem).data('id')
    });
})

更改:

var ids  = $(this).find('li').data('id');

至:

var ids  = $(this).find('li').eq(i).data('id');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM