2011-05-27 72 views
0

我用下面的代碼:jQuery .filter()方法做什麼?

var td = $('#job-tbody').find('td[class=status]').filter('#' + object.id); 

與此問題是,當我再次調用該函數(包含這行代碼),用於在第二時間,也返回先前匹配的結果。爲什麼?

根據文檔,它構造了一個新的包含過濾結果的jquery對象。


這是活的(JQuery)事件問題...當我添加請求。直播活動一次又一次地發生......不必要的火災......

+0

閱讀手冊http://api.jquery.com/filter/ – diEcho 2011-05-27 11:11:20

回答

1

Filter將jQuery對象的集合減少爲僅在本例中匹配選擇器的那些對象。因爲你在一個id上匹配,它應該最多返回一個匹配元素。

編輯:確保在AJAX請求中關閉緩存 - 根據您的緩存設置方式,您可能從客戶端或服務器獲取緩存的請求數據。

$.ajax({ 
    url: '/Helper/GetAllJobs', 
    type: 'post', 
    cache: false, // <-- add this 
    ... 
+0

id是唯一的....當發現id ...我改變行背景顏色...但下一次調用函數... .for其他獨特的ID ...這前一行也返回....我的意思是顏色變化等...我想'td'是唯一的每次函數被稱爲....我不想緩存.. .. – 2011-05-27 10:57:45

+0

@Muaz - 給定的代碼不會返回任何緩存的結果。如果沒有更多的代碼/標記,就必須發生其他事情。 – tvanfosson 2011-05-27 10:59:55

+0

實際上我使用$ .each()...用於循環數據庫.....並且上面的代碼存在於該循環中...... – 2011-05-27 11:00:00

0

.filter()功能 - 減少匹配的元素的那些選擇器匹配或傳遞函數的測試。


考慮用一個簡單的列表的頁面就可以了:

我們可以將此方法應用於一組列表項:

$('li').filter(':even').css('background-color', 'red'); 

此調用的結果是一個紅色背景項目1,3和5,因爲它們與選擇器匹配(回想起:even和:odd使用基於0的索引)。

<!DOCTYPE html> 
<html> 
<head> 
    <style> 
    div { width:60px; height:60px; margin:5px; float:left; 
     border:2px white solid;} 
    </style> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <div></div> 

    <div class="middle"></div> 
    <div class="middle"></div> 
    <div class="middle"></div> 
    <div class="middle"></div> 

    <div></div> 
<script> 

    $("div").css("background", "#c8ebcc") 
      .filter(".middle") 
      .css("border-color", "red"); 
</script> 

</body> 
</html> 

OUTPUT 這將突出顯示紅色邊框是中間的箱子。這意味着最左邊和最右邊的盒子不會被弄髒。

相關問題