[英]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();
以確保您定位到正確的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.