我使用了以下代码:
var td = $( '#job-tbody' ).find( 'td[class=status]' ).filter( '#' + object.id );
这个问题是,当我第二次再次调用函数(包含这行代码)时,也会返回先前匹配的结果。为什么呢?
根据文档,它构造一个包含过滤结果的新jquery对象。
当我添加请求时,它是实时(JQuery)事件问题。现场活动一次又一次地发生......不必要的火灾......
答案 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>
<强>输出强> 这将突出显示中间带红色边框的框。这意味着最左边和最右边的盒子不会被高亮显示。