我有两个问题:1。如何使我的表行可单击并仍然在div ajaxContent
中加载ajax内容?
2。如何在<div id='ajaxContent'>
这是students.php
<?php
echo "<table id='tblStudents'>\n";
echo "<thead><tr>\n";
echo "<td>Namn</td>\n";
echo "<td>Personnummer</td>\n";
echo "<td>Startdatum</td>\n";
echo "<td>Slutdatum</td>\n";
echo "</tr></thead>\n";
echo "<tbody>\n";
while ($row = mysql_fetch_assoc($list_students)) {
$count = ($count + 1) % 2; //will generate 0 or 1 and is used to alternatve the css classes row0 and row1 in the loop result
echo "<tr class='row$count'>\n";
echo "<td><a class='ajaxCall' href='#' rel='".$row['student_id']."'>" . $row['student_firstname'] . "</a> " . $row['student_lastname'] . "</td>\n";
echo "<td>" . $row['student_socialnr'] . "</td>\n";
echo "<td>" . $row['student_startdate'] . "</td>\n";
echo "<td>" . $row['student_enddate'] . "</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
}
?>
<div id='ajaxContent'></div>
<script src="js/jfunc.js"></script>
这是jfunc.js
$('a.ajaxCall').click(function() {
var rowId = $(this).attr('rel');
$.ajax({
type: "get",
url: '/page/editstudent.php',
data: { student_id: rowId },
success: function(data) {
$('#ajaxContent').html(data);
}
});
});
答案 0 :(得分:2)
使用事件委派并监听表格上的所有点击。
$("#tblStudents").on("click", "tr", function(e){
var row_id = $("td:first a.ajaxCall", this).attr("rel");
$("#ajaxContent").html("Loading...");
$.ajax({
url: "/page/editstudent.php",
data: { 'student_id':row_id },
success: function(data){
$("#ajaxContent").html(data);
}
});
});
您不需要为每个表格行添加0
或1
的类名。使用纯CSS,您可以将偶数行和奇数行定位为不同的样式:
#tblStudents tr:nth-child(even) {
background: #f1f1f1;
color: #999;
}
此外,我建议您将学生ID存储在数据属性而不是rel
属性中。这就是数据属性的存在。你甚至可以将它们存储在<tr>
本身上。更多关于http://api.jquery.com/data/#data-html5的那些人。
答案 1 :(得分:0)
1 a在每个tr上添加一个点击事件
$('#tblStudents').on('click', 'tr', function(e) {
// do something
]);
1 b防止ajaxCall上的点击事件冒泡
$('a.ajaxCall').click(function(e) {
e.preventDefault();
e.stopPropagation();
var rowId = $(this).attr('rel');
$.ajax({
type: "get",
url: '/page/editstudent.php',
data: { student_id: rowId },
success: function(data) {
$('#ajaxContent').html(data);
}
});
在请求ajax url之前2,将图像插入ajaxContent。一旦请求完成,图像将被新的html
覆盖