是否可以遍历 Bootstrap 列表?

Is it possible to iterate over a Bootstrap list?

我有一个包含可变数量元素的 Twitter Bootstrap 列表(实际上有两个包含可拖放元素的列表 Sortable.js)。

有时,我想迭代这些列表元素,以便从每个列表条目中获取 data atribute。这是我的列表在 HTML:

的样子
       <div class="panel-body">
            <ul id="main_list" class="list-group">
                <li id="opt1" href="#" class="list-group-item" data_value="1">Opt 1</li>
                <li id="opt2" href="#" class="list-group-item" data_value="2">Opt 2</li>
                <li id="opt3" href="#" class="list-group-item" data_value="3">Opt 3</li>
            </ul>
        </div>

这有可能实现吗,还是我太面向对象了?如果不是,我应该如何重新考虑这个任务?

你可以把你的具体信息如

<li id="opt3" href="#" class="list-group-item" data-value="3">Opt 3</li>

并使用 jquery 轻松获得:

$("#opt3").data("value")

但语义方式是使用“-”而不是“_”。


要迭代列表,您可以这样做:

$("#main_list li").each(function(){
  var itemValue = $(this).data('id');
  var itemName = $(this).data('name');
  alert(itemValue+" - " +itemName);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
   <div class="panel-body">
            <ul id="main_list" class="list-group">
                <li id="opt1" href="#" class="list-group-item" data-name="customname1" data-id="1">Opt 1</li>
                <li id="opt2" href="#" class="list-group-item" data-name="customname2" data-id="2">Opt 2</li>
            </ul>
        </div>

Thiago 的答案完全有效,如果 jQuery 已被使用,那么它应该是公认的答案。但是为了它这里是一个纯 js 的解决方案:

var elements = document.getElementById('main_list').children,
    maxElements = elements.length,
    counter = 0,
    tmpAttribute;

for (; counter < maxElements; counter++) {
    tmpAttribute = elements[counter].getAttribute('data_value');
    // whatever you need to do with tmpAttribute
}

例如,您可以将其包装在一个函数中并在单击时调用它。这是一个演示,可以看到它的实际效果:http://jsfiddle.net/Lzcbzq7x/1/