如何使用JQuery Selector选择列表中的所有项目

时间:2014-01-23 17:58:36

标签: javascript jquery jquery-selectors

我正在这些行上创建一个动态列表:

<li class="MainMenuList" data-role=list-divider>
    <li data-icon=check id="1">
        <a name="n1" id="id-1">Text-1</a>
    </li>
    <li data-icon=check id="2">
        <a name="n2" id="id-2">Text-1</a>
    </li>
    <li data-icon=check id="3">
        <a name="n3" id="id-3">Text-1</a>
    </li>
</li>

如何运行JQuery .each()选择器来访问列表中的所有值。尝试这不会产生蚂蚁结果。

$( ".MainMenuList li a" ).each(function( index ) {
    var n1 = $(this).attr('name');
    var n2 = parseInt ($(this).attr('id'));
    alert( index + "-" + n1 + "-" + n2);
});

有人可以帮忙。

由于

3 个答案:

答案 0 :(得分:3)

你的HTML无效,外面的li应该是ul才有效。

<ul class="MainMenuList" data-role=list-divider>
    <li data-icon=check id="1">
        <a name="n1" id="id-1">Text-1</a>
    </li>
    <li data-icon=check id="2">
        <a name="n2" id="id-2">Text-1</a>
    </li>
    <li data-icon=check id="3">
        <a name="n3" id="id-3">Text-1</a>
    </li>
</ul>

这一行

var n2 = parseInt ($(this).attr('id'));

相同
var n2 = parseInt("id-2");

和parseInt不会返回2,它将返回NaN。

您必须使用正则表达式

$(this).attr('id').match(/\d+/)[0]

或拆分以取出数字

$(this).attr('id').split("-")[1]

或者如果这是一个有效的假设,你可以引用父母id。

$(this).parent().attr('id')

答案 1 :(得分:1)

你在字符串上调用parseInt()。如果您知道您的ID始终采用id-N形式,那么您可以

var id = $(this).attr("id");
var n2 = parseInt(id.split("-")[1]);

答案 2 :(得分:1)

以下是您的代码的jsFiddle

  • 正如评论中所述,您的第一个<li>元素应为<ul>
  • 您还应该将<a> id更改为严格的数字(因为您将其解析为整数)或只是检索数字部分(通过substr或其他内容)< / LI>