获取ul中的所有li data-val

时间:2014-11-26 07:56:56

标签: javascript jquery

当里面有链接时,我无法获得li的数据值,你能帮我解决吗?

li示例:

<li data-val="Lima 2">Lima [T:19ºC H:82%]<a href="#" onclick="if(confirm('Remover?')){parentNode.parentNode.removeChild(parentNode)}"><span style="float:right;"><b>[X]</b></span></a>
</li>

的Javascript

$("#cup").on("click", function () {
$('.clista').each(function () {
    var cidades = [];
    var cidade = '';
    $(this).find('li').each(function () {
        var current = $(this);
        if (current.children().size() > 0) {
            return true;
        }
        cidade += $(this).attr('data-val');
        alert(cidade);
    });
    cidades.push(cidade);
});

});

您可以查看脚本:http://jsfiddle.net/fabiobraglin/rcheaowx/8/

很多!

4 个答案:

答案 0 :(得分:0)

由于你有一个if块,如果li有子节点,则返回true。我不知道你想通过这样做完成什么。但是,如果检查变为true,则函数通过返回true退出。如果删除该return语句或删除complete if块,则更新功能将正常工作。试试这个。希望它有所帮助。

答案 1 :(得分:0)

试试这个:

   $("#cup").on("click", function () {
        var   cidades = new Array();
        $('.clista li').each(function () {
         cidades.push($(this).data('val'));
            });

        alert(cidades);
        });

http://jsfiddle.net/rcheaowx/9/

答案 2 :(得分:0)

您应该在alert功能之外写下each。你不应该检查孩子,这就是你为什么要这样做的结果;得到你想要的结果。

$('.clista').each(function () {
    var cidades = [];
    var cidade = '';
    $(this).find('li').each(function () {


        cidade += $(this).attr('data-val');

    });
    alert(cidade);
    cidades.push(cidade);
});

答案 3 :(得分:0)

获取所有data-val只是删除下面的代码部分

if (current.children().size() > 0) { return true; }