jQuery .filter()方法有什么作用?

时间:2011-05-27 10:41:03

标签: jquery jquery-filter

我使用了以下代码:

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

这个问题是,当我第二次再次调用函数(包含这行代码)时,也会返回先前匹配的结果。为什么呢?

根据文档,它构造一个包含过滤结果的新jquery对象。


当我添加请求时,它是实时(JQuery)事件问题。现场活动一次又一次地发生......不必要的火灾......

2 个答案:

答案 0 :(得分:1)

Filter将jQuery对象的集合减少到仅在这种情况下与选择器匹配的那些对象。因为您在id上匹配,所以它最多应返回一个匹配元素。

编辑:确保在AJAX请求中关闭缓存 - 您可能会从客户端或服务器获取缓存的请求数据,具体取决于您的缓存设置方式。< / p>

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

答案 1 :(得分:0)

.filter()的功能 - 将匹配元素集合减少到与选择器匹配的元素或通过函数测试。


考虑一个包含简单列表的页面:

我们可以将此方法应用于列表项集:

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

此调用的结果是项目1,3和5的红色背景,因为它们与选择器匹配(回想一下:偶数和:奇数使用基于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>

<强>输出 这将突出显示中间带红色边框的框。这意味着最左边和最右边的盒子不会被高亮显示。