我在我的网站上工作,我不知道如何在表格之后隐藏h2标签。你能帮助我吗 ?非常感谢您的帮助。
HTML:
<h2>
<a class="h2 dark" href="/be/ae/3_controls-training.html" name="3">Controls Training</a>
</h2>
<table class="training" cellspacing="0" width="100%" style="display: none;">
<tbody>
<tr>
<th style="text-align: left;">Training</th>
<th style="text-align: left;">Start</th>
<th style="text-align: left;">End</th>
<th style="text-align: left;">Location</th>
<th style="text-align: right;">Price*</th>
<th> </th>
</tr>
</tbody>
</table>
)* EUR excl. BTW
JQuery的:
<script type="text/javascript">
$(document).ready(function() {
// this is code for hiding my table if td is not inside
$('.training').each(function(){
if ($(this).find('td').length == 0){
$(this).closest('h2').hide(); // I try to hide h2 before table without success
$(this).hide(); // this works fine
// I don't know how to hide text after table
}
});
});
</script>
答案 0 :(得分:4)
要获取DOM中的前一个元素,可以使用jQuery .prev()http://api.jquery.com/prev/
$(this).prev().hide();
您无法选择文本,因为它不是DOM元素。将其包装在p标签中,然后您可以使用.next()http://api.jquery.com/next/
$(this).next().hide();
答案 1 :(得分:2)
如果您可以将#text
与span
或div
包起来,则很容易。然后,您可以使用.prev
和.next
选择表格前后的元素。
如果您无法访问标记..那么唯一的方法是获取内容并查找文本并将其删除..
参见下面的演示..它将不会显示任何内容..因为OP的输出是删除/隐藏所有内容。 :)
注意:以下代码删除了表格后面的下一个文本节点..因此请正确测试并根据需要进行更改。
$('.training').each(function() {
$(this).prev('h2').remove(); //remove or hide h2
var tableSiblings = $(this).parent().contents();
var deleteNext = false;
$.each(tableSiblings, function(i, content) {
if (deleteNext) {
$(this).remove();
deleteNext = false;
}
if ($(this).hasClass('training')) {
deleteNext = true;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<h2>
<a class="h2 dark" href="/be/ae/3_controls-training.html" name="3">Controls Training</a>
</h2>
<table class="training" cellspacing="0" width="100%" style="display: none;">
<tbody>
<tr>
<th style="text-align: left;">Training</th>
<th style="text-align: left;">Start</th>
<th style="text-align: left;">End</th>
<th style="text-align: left;">Location</th>
<th style="text-align: right;">Price*</th>
<th></th>
</tr>
</tbody>
</table>
)* EUR excl. BTW
答案 2 :(得分:0)
试试这个
$('.training').closest( 'h2' ).hide(); // will hide closest h2 tag, but could be after
$('.training').next().hide(); // will hide element directly after .training
您应该尝试添加特定于您尝试执行的操作的类,而不是依赖于dom元素