Jquery搜索过滤器不工作后加载ajax内容
Jquery search filter not work after load ajax content
我有一个示例代码
Search:<input type="search" class="form-control" id="search">
<table id="gwAssignForm"><tbody></tbody></table>
我的jquery:
$(document).ready(function() {
$.ajax({
type: "POST",
url: "content.php",
data: {},
async : false,
success: function(result) {
$('#gwAssignForm tbody').html(result.html);
},
error : function(xhr, status){
console.log(status);
},
});
var $rows = $('#gwAssignForm tbody tr');
$('#search').keyup(function() {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/'s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
});
});
在content.php <tr>
<td>Apple</td>
<td>Green</td>
</tr>
<tr>
<td>Grapes</td>
<td>Green</td>
</tr>
<tr>
<td>Orange</td>
<td>Orange</td>
</tr>
加载ajax内容后。我开始搜索,但没有成功。如何解决这个问题?
它不起作用,因为您试图在加载ajax数据之前向$rows
添加元素。你只需要在你的keyup
函数中声明$rows
。
只需改变这个-
var $rows = $('#gwAssignForm tbody tr');
$('#search').keyup(function() {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/'s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
});
to this -
$('#search').keyup(function() {
var $rows = $('#gwAssignForm tbody tr');
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/'s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
});
由于表数据是动态添加的,$rows
将是表中的初始行,因此需要在动态添加表数据后更新$rows
$(document).ready(function() {
var $rows = $('#gwAssignForm tbody tr');
$.ajax({
type: "POST",
url: "content.php",
data: {},
async : false,
success: function(result) {
$('#gwAssignForm tbody').html(result.html);
$rows = $('#gwAssignForm tbody tr');
// update '$rows' after table content is added
},
error : function(xhr, status){
console.log(status);
},
});
$('#search').keyup(function() {
var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
$rows.show().filter(function() {
var text = $(this).text().replace(/'s+/g, ' ').toLowerCase();
return !~text.indexOf(val);
}).hide();
});
});
相关文章:
- 如何更改jquerymobile中默认的加载ajax加载程序gif
- 无法在 IE6 和 IE7 上加载 ajax
- 页面刷新后重新加载 ajax 检索到的数据
- 清理在加载 Ajax 内容时添加的 CSS
- jquery选项卡加载Ajax内容
- Grails:多个加载ajax调用,但只有一个打印到控制台
- 如何检测通过JSON数据引用的图像何时加载AJAX
- 加载ajax数据时出现jVectorMap问题
- JQuery在加载ajax时阻止链接工作
- 如何在不重新加载ajax的情况下在datatable上.draw()或添加行
- 替换超链接默认操作以加载 AJAX 请求
- 高图表不使用加载 ajax 的数组进行渲染
- 带有 OnClick 的 jQuery 链接标记 href 需要单击两次才能加载 AJAX
- 悬停两次以加载 ajax
- 获取加载 ajax 的文档信息
- 使用 Jquery 在 AJAX 内部加载 AJAX
- 为什么当页面加载 AJAX 时我的 URL 之间没有空格
- 在当前页面中加载一个新的谷歌地图,加载AJAX
- 当滚动达到 80% 时加载 ajax
- 图像滑块未加载 Ajax 请求