2012-09-04 52 views
0

我想實現一個實時搜索過濾函數,並在jQuery中使用$ .each()。現在,我只是試圖遍歷每個元素並打印文本,但卻遇到了最大調用堆棧超出的問題。該列表大約是50-60項,所以我認爲大小不是問題,也許我遇到了一些無限遞歸,雖然我不這麼認爲。下面是我的相關HTML:

<div id="brands"> 
    <ul id="left_brands"> 
     <li><a class="brand_check" href="javascript:void">Vineyard Vines</a></li> 
     <li><a class="brand_check" href="javascript:void">Brooks Brothers</a></li> 
     <li><a class="brand_check" href="javascript:void">Coast Apparel</a></li> 
     <!-- etc. --> 
    </ul> 
</div> 

這裏是jQuery的代碼,竟然放棄我的錯誤:

$("#brand_filter input").keyup(function() { 
    $.each("#brands li a", function() { 
     alert($(this).text()); 
    }); 
}); 

任何建議都非常讚賞。

回答

1

而是執行此操作:

$("#brand_filter input").keyup(function() { 
    $("#brands li a").each(function() { 
     alert($(this).text()); 
    }); 
}); 

的遞歸灒'的gettext –的內部所產生你在字符串中的字符迭代自己,而不是選擇的結果。在這種情況下,我認爲沒有像你以前那樣認爲自己有任何好處,而且這看起來更具規範性(然而,這可能只是我的偏好)。

+0

你沒有看到好處做什麼? – jrubins

+0

@jrubins你這樣做的方式(或者更準確地說,以爲你這樣做)。 –

+0

哦,是的,當然。感謝您的答案 – jrubins

2

如果使用集合迭代器,則必須遍歷Jquery對象而不是選擇器字符串。

所以只能使用

$("#brand_filter input").keyup(function() { 
    $.each($("#brands li a"), function() { 
     alert($(this).text()); 
    }); 
}); 

或使用選擇語法

$("#brand_filter input").keyup(function() { 
    $("#brands li a").each(function() { 
     alert($(this).text()); 
    }); 
}); 
相關問題