函数返回'undefined',同时它可以在函数体内获得正确的结果

时间:2011-09-13 07:20:48

标签: javascript jquery

我的html包含以下内容:

<div class="ui-btn-text">
<a id="12323" class="listviewLines ui-link-inherit" href="" /></div>
<div class="ui-btn-text">
<a id="23534" class="listviewLines ui-link-inherit" href="" /></div>
<div class="ui-btn-text">
<a id="12312" class="listviewLines ui-link-inherit" href="" /></div>

我想根据标签的索引提取id值,所以我写下面的函数:

function getId(index) {
    $('.ui-btn-text > a').each(function(i) {
        if (index == i) {
            alert($(this).attr("id"));
            return ($(this).attr("id"));
        }
    });
}

然后当我调用getId(0)时,结果为“undefined”。我是javascript的新手,有人可以帮帮我吗?

此外,jQuery中是否有一个函数可以直接返回带有索引参数的内容,而不会迭代所有子节点?

5 个答案:

答案 0 :(得分:2)

作为参数传递给each的内部匿名函数返回。 getId不返回任何内容,即undefined

您可以使用N-th child selector

获取元素的第N个子元素

在您的情况下,选择器将是$('.ui-btn-text > a:nth-child('+index+')')

答案 1 :(得分:2)

function getId(index) {
    var ret;
    $('.ui-btn-text > a').each(function(i) {
        if (index == i) {
            ret = $(this).attr("id");
            return false; // stop internal loop by jQuery
        }
    });
    return ret;
}

答案 2 :(得分:1)

return函数中没有getId语句。 (不计算匿名函数中的return。)

答案 3 :(得分:1)

您正在寻找nth-child selector

$('.ui-btn-text a:nth-child(' + index+')')

答案 4 :(得分:1)

尝试

function getId(index) {
    return $($('.ui-btn-text > a')[index]).attr("id");
}

当然,这是零基础。