我使用了以下代码:
var td = $( '#job-tbody' ).find( 'td[class=status]' ).filter( '#' + object.id );
这样做的问题是,当我再次调用该函数(包含这行代码)时,还会返回先前匹配的结果。为什么?
根据文档,它构造了一个包含过滤结果的新 jquery 对象。
这是实时(JQuery)事件问题......当我添加请求时。现场活动一次又一次地触发......不必要的火灾......
我使用了以下代码:
var td = $( '#job-tbody' ).find( 'td[class=status]' ).filter( '#' + object.id );
这样做的问题是,当我再次调用该函数(包含这行代码)时,还会返回先前匹配的结果。为什么?
根据文档,它构造了一个包含过滤结果的新 jquery 对象。
这是实时(JQuery)事件问题......当我添加请求时。现场活动一次又一次地触发......不必要的火灾......
Filter
将 jQuery 对象集减少到仅在这种情况下匹配选择器的对象。因为您正在匹配一个 id,所以它应该最多返回一个匹配元素。
编辑:确保您在 AJAX 请求中关闭缓存 - 根据您的缓存设置方式,您可能从客户端或服务器获取缓存的请求数据。
$.ajax({
url: '/Helper/GetAllJobs',
type: 'post',
cache: false, // <-- add this
...
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>
输出 这将突出显示中间带有红色边框的框。这意味着最左边和最右边的框不会被突出显示。