簡體   English   中英

為什么jQuery.each不能遍歷所有項目?

[英]Why jQuery.each doesn't loop through all items?

當在.each函數中設置了變量時,似乎.each函數無法正確循環通過所有項目,這是假定未刪除項目的原因。 但是我用來測試循環的第二個函數表明它應該可以工作。

有什么特別的原因嗎?

HTML代碼:

<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代碼:

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/

您嘗試查找要刪除的class="li"祖先:

$("." + thisClass).closest('.li').remove();
// -------------------------^

您的意思是說:

$("." + thisClass).closest('li').remove();

查找<li> 另外,正如胡安·格雷羅Juan Guerrero)在評論中指出的那樣,我想你要這樣說:

$(this).closest('li').remove();

以確保您定位到正確的元素。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM