【发布时间】:2015-05-12 10:45:00
【问题描述】:
我有一个 HTML 表格,其中每一行都有一个数据元素。像这样的:
<tr class="logreader-header-row">
<td class="logtable-header" colspan="100%" data-date="2015-05-12">
<img class="logreader-header-controller" src="images/logreader-dropdown.png">
2015-05-12
</td>
</tr>
<tr class="logreader-header-row">
<td class="logtable-header" colspan="100%" data-date="2015-05-11">
<img class="logreader-header-controller" src="images/logreader-dropdown.png">
2015-05-11
</td>
</tr>
<tr class="logreader-header-row">
<td class="logtable-header" colspan="100%" data-date="2015-05-07">
<img class="logreader-header-controller" src="images/logreader-dropdown.png">
2015-05-07
</td>
</tr>
每一行都附加了一个 onclick 事件。当用户单击该行时,数据属性正在通过 AJAX 请求发送到服务器:
$().ready(function(){
$(".logtable-header").each(function(){
$(this).on("click", function(){
var header_row = $(this).parent("logreader-header-row");
$.ajax({
type: 'POST',
url: URL+'admin/ajax_processor/getLog',
data:{date:$(this).data("date")},
success: function(response){
header_row.after(response);
},
error: function(request, status, error){
console.log(request);
console.log(status);
console.log(error);
}
});
});
});
});
AJAX 响应包含服务器上生成的表行子集的 HTML 代码。我想要的是在被点击的那一行之后插入这些行。这是我在 AJAX 响应中的内容:
<tr class="logtable-oddrow-notice">
<td>2015-04-27</td>
<td>08:55:07</td>
<td>NOTICE</td>
<td>ERROR 404 Requested url: "http://localhost/PH-SERVER_MIRROR/frontend/index/" not found! (user:unidentified[id:-])</td>
</tr>
<tr class="logtable-evenrow-notice">
<td>2015-04-27</td>
<td>09:21:08</td>
<td>NOTICE</td>
<td>'Test'[id:30] user succesfully logged in.</td>
</tr>
<tr class="logtable-oddrow-notice">
<td>2015-04-27</td>
<td>10:13:37</td>
<td>NOTICE</td>
<td>New newsletter created: "Teszt 2" by user:Test[id:30]</td>
</tr>
header_row 是被点击的<td> 元素的父<tr> 元素:
var header_row = $(this).parent("logreader-header-row");
但是点击<tr>后我无法插入回复:
success: function(response){
header_row.after(response);
},
我做错了什么?
【问题讨论】:
-
var header_row = $(this).parent("logreader-header-row");错过了类点 -
为什么在 .each() 中需要 .on('click');我认为它没用
-
$(".logtable-header").on("click", function(){...将为所有提到类的 td 元素注册事件,所以这里没有必要循环。 -
您可以通过将点击处理程序附加到
tr.logreader-header-row元素而不是它们唯一的td元素来简化。
标签: jquery