Php 删除所有行,但显示已单击的按id指定的行
我试图显示结果时,用户点击了一行,然后我会采取这个id和获取相关数据,并显示在下面Php 删除所有行,但显示已单击的按id指定的行,php,jquery,html,Php,Jquery,Html,我试图显示结果时,用户点击了一行,然后我会采取这个id和获取相关数据,并显示在下面 Student Id Total Marks Position View 41 525 1 Marks Sheet 42 504 2 Marks Sheet 43 504 2 Marks Sheet 44
Student Id Total Marks Position View
41 525 1 Marks Sheet
42 504 2 Marks Sheet
43 504 2 Marks Sheet
44 504 2 Marks Sheet
45 504 2 Marks Sheet
假设用户单击了第41行,则结果将显示在第41行下方,之后当用户单击42时,结果将显示在第42行下方,而位于第41行下方的上一个结果将被隐藏/删除
我已经尝试了好几次,但我无法显示,我的代码只显示第一次。如
Student Id Total Marks Position View
41 525 1 Marks Sheet
Your marks sheet of student id:41
42 504 2 Marks Sheet
43 504 2 Marks Sheet
44 504 2 Marks Sheet
45 504 2 Marks Sheet
当用户单击第44行时
Student Id Total Marks Position View
41 525 1 Marks Sheet
42 504 2 Marks Sheet
43 504 2 Marks Sheet
44 504 2 Marks Sheet
Your marks sheet of student id:44
45 504 2 Marks Sheet
我的JS代码:
$(function(){
$('.student').click(function(){
var sid = this.id;
$('.marks').not('#'+sid).remove();
$('.marks').html("Your marks sheet of student id:"+sid);//Next,I will add user clicked studnt marks sheet from database.
});
});
php和html代码:
echo '<tbody>';
foreach($results as $user){
echo '<tr><td>'. $user->stdId.'</td><td>'.$user->total_Marks.'</td><td>'.$user->position.'</td><td class="student" id='.$user->stdId.'>Marks Sheet</td></tr>';
echo '<tr class="marks" id='.$user->stdId.'></tr>';
}
echo '<tr><tr></tbody>';
echo';
foreach($results as$user){
回显'.$user->stdId'.$user->total_Marks'.'.$user->position.'Marks Sheet';
回声';
}
回声';
这里是新代码。使用“this”关键字获取数据(id)
您将通过
class=“student”
获得div的id(返回class=“student”的所有div),但它应该是已单击的当前元素的id。
另外,您正在为student和mark元素使用相同的id,因此需要更改mark元素id,比如marks_{studentId}(见下文)
”;
并使用下面的代码
$(function(){
$('.student').click(function(){
var sid = this.id;
^------^// changed this
$('.marks').html('');// remove all mark messages
$('#marks_'+sid ).html("<td colspan='4'>Yes that is ok."+sid+"</td>");
});
});
$(函数(){
$('.student')。单击(函数(){
var sid=this.id;
^------^//改变了这个
$('.marks').html('');//删除所有标记消息
$('#marks'+sid).html(“是的,没问题。”+sid+);
});
});
如果您不想更改标记元素id,则使用下面的代码,但此处标记行必须位于学生行的下一行
$(function(){
$('.student').click(function(){
var sid = $(this).attr('id');
$('.marks').html('')// remove all mark messages
$(this).parent().next().html("<td colspan='4'>Yes that is ok."+sid+"</td>");
});
});
$(函数(){
$('.student')。单击(函数(){
var sid=$(this.attr('id');
$('.marks').html('')//删除所有标记消息
$(this.parent().next().html(“是的,没问题。”+sid+);
});
});
这里是工作+1甚至可以是:var sid=this.id代码>可以是:$('.marks')。而不是(this.remove()
但这意味着单击的元素具有两个类student
&标记
,因为ID在文档上下文中必须是唯一的。编辑:确实OP的HTML标记无效,使用重复的IDSY将显示代码并仅显示其中一行。我需要用户单击的每一行,消息将从前几行隐藏,消息将显示在当前行的下方。可能有多行。pl提供JSFIDLE链接这是无效的HTML标记,ID在文档上下文中必须是唯一的。如果显示代码,则只显示其中一行。我需要用户单击的每一行,消息将从前几行隐藏,消息将显示在当前行的下方。可能有多行。它在$(this).parent().next().html(“是的,没问题。”+sid+”)中显示错误;出于这个原因,我把它写成:$(this.parent().next().html(“是的,没问题。”+sid+);但它不起作用。@Bhushan Kawadkar,是否可以用tr而不是td添加此消息。因为,我将添加几个tr和td,而不是像这样的消息:主题代码主题瓷砖Makrs E1 English 88 H1 History 56它将来自jquery post。然后,这些将添加到我的标记行,而不是消息。
$(function(){
$('.student').click(function(){
var sid = this.id;
^------^// changed this
$('.marks').html('');// remove all mark messages
$('#marks_'+sid ).html("<td colspan='4'>Yes that is ok."+sid+"</td>");
});
});
$(function(){
$('.student').click(function(){
var sid = $(this).attr('id');
$('.marks').html('')// remove all mark messages
$(this).parent().next().html("<td colspan='4'>Yes that is ok."+sid+"</td>");
});
});