javascript - 使用 li 项目中的 javascript 通过数据属性检索 id

标签 javascript jquery html

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 类中检索 session 号:class="sortable rightDiv session4" 并从 data-id 中检索 li 的每个 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')
    });
})

关于javascript - 使用 li 项目中的 javascript 通过数据属性检索 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380350/

相关文章:

javascript - addEventListener 在 Titanium 中不起作用

javascript - Raty jQuery 插件无法正常工作 Rails 5

jquery - 如何使用 jQuery 使 div 内的语句在页面加载时不可见?

html - 如何在 div 标签内制作超链接图像?

jquery - mask 图像对于 div css 来说太大了

javascript - Dygraph Unix 时间戳

javascript - 如何在我的客户端代码中设置环境变量?

javascript - 如何解决字体拦截问题?

jquery - 选择 - 创建和选项不能一起工作

Javascript图像到div