Php Jquery:如何仅访问表中指定的div
我在使用Jquery的表中一次只能隐藏/显示1个div时遇到问题。 我在一个表中有两行:第一行包含一个链接,该链接将在第二行中切换div(.displayMail)。这些行有很多实例,所以当我点击链接时,它应该只更新它下面的下一个div,但它会更新所有div!!??有人愿意帮一个笨蛋吗 这是我的表,由php使用while循环生成,其中的行数根据ttl而变化。行数Php Jquery:如何仅访问表中指定的div,php,javascript,jquery,loops,while-loop,Php,Javascript,Jquery,Loops,While Loop,我在使用Jquery的表中一次只能隐藏/显示1个div时遇到问题。 我在一个表中有两行:第一行包含一个链接,该链接将在第二行中切换div(.displayMail)。这些行有很多实例,所以当我点击链接时,它应该只更新它下面的下一个div,但它会更新所有div!!??有人愿意帮一个笨蛋吗 这是我的表,由php使用while循环生成,其中的行数根据ttl而变化。行数 <table id="inboxTable" class="txt13" width="800px"> <tr>
<table id="inboxTable" class="txt13" width="800px">
<tr><th style="text-decoration:underline">From</th><td width="20px"></td><th style="text-decoration:underline">Subject
</th><td width="20px"></td>
<th style="text-decoration:underline">Date</th><td width="20px"></td>
<th style="text-decoration:underline">Action</th></tr>';
while($info=mysql_fetch_array($result)){
$this->requestsMail .='
<tr>
<td width="100px"><a href="#" class="showMail" onClick="viewMail()">read</a></td></tr>
<tr><td colspan="7"><div class="displayMail" style="margin:10px 120px 10px 120px" onClick="viewMail()">View Message</div></td></tr>
';
}
$this->requestsMail .='</table>
我可以获得更新所有div的链接,但我只想更新相应的div。
我用next()、children()、parents()……尝试了许多访问(“.displayMail”)的组合,基本上什么都有,但当我点击相应的按钮时,我仍然无法找到它。为了让它正常工作,花了这么多时间:(您需要应用一些DOM遍历
function viewMail(){
$("a.showMail").click(function() {
$(this).closest('tr').next().find('.displayMail').toggle();
return false;
});
}
只需选择.displayMail
jQuery将正确地查询所有这些div。通过调用,我们将遍历DOM,直到
的第一个实例。从那里,我们转到下一个
调用,并最终搜索该节点,以查找的正确实例。displayMail
更新
我刚刚实现了您的调用约定。通过调用onclick
处理程序中的viewMail
,您每次都会绑定另一个click处理程序。因此,您只需调用:
$(function() {
$("a.showMail").click(function() {
$(this).closest('tr').next().find('.displayMail').toggle();
return false;
});
});
这将绑定单击事件处理程序一次。删除
onclick
属性。我将删除viewMail()
函数,并将jQuery更改为:
function viewMail(){
$("a.showMail").click(function() {
$(this).parent('tr').next().find(".displayMail").toggle();
return false;
});
}
$("a.showMail").click(function() {
$(this).closest('tr').next().find('.displayMail').toggle();
return false;
});
$("div.displayMail").click(function() {
$(this).toggle();
return false;
});
我可以问一下,为什么要在调用
onClick()
处理程序的同一元素的click()
处理程序的函数中放置click()
处理程序?这有点多余,不是吗?.parent()
只会移动一个级别,那就是
节点。你真是太棒了!!我应该在几个小时前发布,哈哈。谢谢你!还有很好的解释。所以next()只能作为对前面指定元素的引用(最近的(tr))对吗?@Anriëtte:没什么。这看起来像是投了反对票,没关系。总之你是对的,我不知道OP是如何调用这个方法的。@jAndy:如果你仔细看,你会发现他正在调用viewMail()
来自
上的onClick
处理程序:
,因此我的答案如下。你们都很棒。感谢所有的帮助。我接受了你们的建议并删除了onClick属性。现在工作起来很有魅力!:)
$("a.showMail").click(function() {
$(this).closest('tr').next().find('.displayMail').toggle();
return false;
});
$("div.displayMail").click(function() {
$(this).toggle();
return false;
});