我有一个HTML表格,结构如下
<table class="mytable">
<tbody class="body">
<tr class="headline1"> ... several td tags with some text ... </tr>
<tr class="headline2"> ... several td tags with some text ... </tr>
<tr class="content"> ... several td tags with some text ... </tr>
<tr class="content"> ... several td tags with some text ... </tr>
<tr class="content"> ... several td tags with some text ... </tr>
<tr class="content"> ... several td tags with some text ... </tr>
<tr class="sum"> ... several td tags with some text ... </tr>
</tbody>
</table>
表的结构不能改变,现在我想用一个 AJAX 调用的结果来替换带有类“content”和“sum”的行(<tr>
元素)(search.php生成和前面描述的一样的表结构)
我当前的代码如下所示:
$(document).ready(function(){
const search_field = $('#search_field');
search_field.keyup(function(){
$.ajax({
url:'http://someurl/search.php?search=' + search_field.val(),
type:"POST",
success:function(data){
var xxx = $(data).find('.body').html();
$('.body').html(xxx);
}
});
});
});
代码可以工作,但是替换了整个tbody,我只想替换<tr>
元素(所有<td>
元素都包含在<tr>
元素中),所以这两个标题应该保留,而不是从 AJAX 调用的结果中删除。
一个简单的解决方案是关闭标题后面的<tbody>
元素,并创建一个具有不同id/class的新<tbody>
元素。
3条答案
按热度按时间rqqzpn5f1#
.sum
行.content
行.content
.before()
方法在.sum
元素行之前插入新行.on()
方法。用户也可以向其中粘贴一个值,在这种情况下,* key * 事件将不会注册提示:现在,您不一定需要jQuery:
一个二个一个一个
无论如何,如果可能的话,应该更好地重写
search.php
以提供JSON数据。这样的数据可以在许多其他不一定使用<table>
的组件中重用。另外,您不一定需要从前端使用这样的JSON数据,但也可以从其他后端脚本使用。考虑一下,重写服务器端API逻辑从长远来看可能会有所帮助。slhcrj9b2#
您将需要使用
outerHTML
或使用.body
的父选择器,因为jQuery的.html()
只获取指定选择器的内容。我用了第一个,我认为它的工作原理和你描述的一样。看看this fiddle。
6yjfywim3#
或者对.content行使用循环: