-1

我正在尝试清除<ul>它的<li>一部分孩子,然后是append()<li>的 empty <ul>

我正在(尝试)为此使用 OOP JS,所以进一步启动代码的 jQuery 是这样的:

$('#nav li a').click(function() {
    TutorGroupPoints.yearClick($(this).attr("id"));
});

yearClick函数中的部分代码为:

$('#nav ul').empty();

for (var i = 0; i < this.Sorted.length; i++) {
    $('#nav ul').append('<li id="' + this.Sorted[i].id + '">' + this.Sorted[i].name + '</li>');
}

this.Sorted是一个完全填充的项目数组。

HTML 如下所示:

<div id="nav">
    <h2>Tutor Groups</h2>
    <ul>
        <li><a class="year" href="javascript:void(0);" title="Year 9" id="9">Year 9</a></li>
        <li><a class="year" href="javascript:void(0);" title="Year 10" id="10">Year 10</a></li>
        <li><a class="year" href="javascript:void(0);" title="Year 11" id="11">Year 11</a></li>
        <li><a class="year" href="javascript:void(0);" title="Year 12" id="12">Year 12</a></li>
        <li><a class="year" href="javascript:void(0);" title="Year 13" id="13">Year 13</a></li>
    </ul>
</div>

当我单击其中一个#nav li锚点时,它只会擦除<ul>并且没有append()任何新的<li>. 但是,如果我注释掉empty,新的 s 会正确地<li>附加到现有的 s 上。<li>

难道我做错了什么?


编辑

我已经包含console.log了函数,并且没有出现任何问题。

控制台日志

全文console.log如下:

[
    Object
    id: "12117"
    name: "11AB/Tp"
    __proto__: Object
    , 
    Object
    id: "12118"
    name: "11ABO/Tp"
    __proto__: Object ,
    Object , Object , Object , Object , Object , Object , Object ,  Object , Object , Object , Object , Object , Object
] compiler.php:32
<li id="12117">11AB/Tp</li> compiler.php:38
<li id="12118">11ABO/Tp</li> compiler.php:38
<li id="12119">11AN/Tp</li> compiler.php:38
<li id="12605">11DR/Tp</li> compiler.php:38
<li id="12626">11DST/Tp</li> compiler.php:38
<li id="12149">11JOR/Tp</li> compiler.php:38
<li id="12150">11LLU/Tp</li> compiler.php:38
<li id="12151">11MDA/Tp</li> compiler.php:38
<li id="12152">11ND/Tp</li> compiler.php:38
<li id="12153">11PD/Tp</li> compiler.php:38
<li id="12154">11RJ/Tp</li> compiler.php:38
<li id="12606">11SDI/Tp</li> compiler.php:38
<li id="12155">11ST/Tp</li> compiler.php:38
<li id="12607">11SW/Tp</li> compiler.php:38
<li id="12156">11VY/Tp</li> 

完整的代码可以在这里找到。我最初没有包含它,因为它使用特定于 VLE 的 API 调用,如果您不熟悉它们,这往往会使事情变得混乱。


提前致谢,

4

1 回答 1

0

现在您已经显示了 ACTUAL 代码和 ACTUAL HTML,我们可以看到您正在执行以下操作:

$('#nav').empty();

然后尝试附加到:

$('#nav ul')

但是,.empty()删除的ul$('#nav ul')一个空的 jQuery 对象(在您的页面中找不到任何内容),因此尝试附加到它不会做任何事情。这也解释了为什么删除.empty()线可以.append()工作。

改变:

$('#nav').empty();

到:

$('#nav ul').empty();
于 2012-08-14T13:04:30.363 回答