首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么jQuery.each不循环遍历所有项目?

为什么jQuery.each不循环遍历所有项目?
EN

Stack Overflow用户
提问于 2013-11-03 03:54:57
回答 1查看 568关注 0票数 0

当在.each函数中有变量集时,似乎.each函数没有正确地循环所有项,假设这是项没有被删除的原因。但是我用来测试循环的第二个函数表明它应该能工作。

有什么特别的事吗?

HTML代码:

代码语言:javascript
复制
<div id="top-menu">
    <ul id="top-menu-main-ul">
        <li class="top-menu-main-li">
            <a href="#" title="Home">Home</a>
            <div class="arrow-bg-above-ul"> </div>
            <ul class="top-menu-child-ul">
                <li class="top-li-ztyle"><a class="menu-item-2" href="index.php">Admin Home</a></li>
                <li><a class="menu-item-2" href="myaccount.php">My Account</a></li>
                <li class="bottom-li-ztyle"><a class="menu-item-0" href="logout.php">Logout</a></li>
            </ul>
        </li>

        <li class="top-menu-main-li">
            <span class="separator"><a href="#" title="Clients">Clients</a></span>
            <div class="arrow-bg-above-ul"> </div>
            <ul class="top-menu-child-ul">
                <li class="top-li-ztyle"><a class="menu-item-3" href="clients.php">View/Search Clients</a></li>
                <li><a class="menu-item-4" href="clientsadd.php">Add New Client</a></li>
                <li class="bottom-li-ztyle"><a class="menu-item-5" href="massmail.php">Mass Mail Clients</a></li>   
            </ul>
        </li>
    </ul>
</div>

jQuery代码:

代码语言:javascript
复制
var arrayOfitems = ["1","2","33","34","35","36","37","38","39","40","41","42","77"];

$(document).ready(function(){ 
    $(".top-menu-child-ul li a").each(function() {
        var thisClass = $(this).attr('class');
        var thisClassNum = thisClass.replace('menu-item-', '');
        var searchForThisNum = thisClassNum.toString();     

        if($.inArray(searchForThisNum, arrayOfitems) !== -1 )
        {
           // do nothing
        }
        else
        {
            $("." + thisClass).closest('.li').remove();
        }
    });


    // test that loop should work
    var myArray = [];

    $(".top-menu-child-ul li a").each(function() {
       myArray.push($(this).attr('class'));
    });

    alert(myArray);
});

小提琴示例:- http://jsfiddle.net/LmUPL/2/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-03 04:01:47

您正在尝试查找class="li"祖先以删除:

代码语言:javascript
复制
$("." + thisClass).closest('.li').remove();
// -------------------------^

你是说:

代码语言:javascript
复制
$("." + thisClass).closest('li').remove();

另外,正如Juan Guerrero在评论中所指出的,要找到Juan Guerrero。我想您应该这样说:

代码语言:javascript
复制
$(this).closest('li').remove();

以确保你的目标是正确的元素。

演示:http://jsfiddle.net/ambiguous/A7Ys2/2/

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19749661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档