0

我使用了以下代码:

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

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

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


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

4

2 回答 2

1

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

编辑:确保您在 AJAX 请求中关闭缓存 - 根据您的缓存设置方式,您可能从客户端或服务器获取缓存的请求数据。

$.ajax({
     url: '/Helper/GetAllJobs',
     type: 'post',
     cache: false, // <-- add this
     ...
于 2011-05-27T10:52:35.007 回答
0

Function of .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>

输出 这将突出显示中间带有红色边框的框。这意味着最左边和最右边的框不会被突出显示。

于 2011-05-27T10:54:05.583 回答