Javascript 排除项目及其内容元素
我的页面中有很多元素,我试图只打印一个Javascript 排除项目及其内容元素,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我的页面中有很多元素,我试图只打印一个div,包括它的所有内容 我有这个css: @media print { .no-print, .no-print * { display: none !important; } } 现在,在之前,我想运行一个jQuery代码,以便在每个div中添加。没有print类,而是。content及其包含的元素 要排除.content我知道我必须做什么: $('div:not(.content)').addClass
div
,包括它的所有内容
我有这个css:
@media print
{
.no-print, .no-print *
{
display: none !important;
}
}
现在,在
之前,我想运行一个jQuery代码,以便在每个div
中添加。没有print
类,而是。content
及其包含的元素
要排除.content
我知道我必须做什么:
$('div:not(.content)').addClass('no-print');
但为了排除其内容,我尝试:
$('div:not(.content,.content *)').addClass('no-print');
及
但它们都没有达到预期的效果。代码将添加到所有div中。无打印。打印时会显示一个空白页
更新:
我认为这里不需要html。但正如评论所要求的,我添加了一个示例:
<div>
<div class="header">...</div>
<div class="nav">...</div>
<div class="menu>
<ul>
<li>menu item 1</li>
<li>menu item 2</li>
<li>menu item 3</li>
<li>menu item 4</li>
<li>menu item 5</li>
</ul>
</div>
<div class="sidebar">...</div>
<div class="content">
<div><table>....</table></div>
<div><table>....</table></div>
<div><table>....</table></div>
</div>
<div class="footer">...</div>
</div>
...
...
您可以使用过滤器:
var elements = $('div:not(.content) *').filter(function(index, element) {
return $(this).closest('div.content').length == 0;
});
$(函数(){
变量元素=$('div:not(.content)*')。过滤器(函数(索引,元素){
返回$(this).closest('div.content')。长度==0;
});
元素。每个(函数(索引、元素){
log(index+'->'+element.outerHTML.substring(0,30)+'..);
});
});代码>
对
对
对
对
- 菜单项1
- 菜单项2
- 菜单项3
- 菜单项4
- 菜单项5
对
不
不
不
不
对
请共享完整的代码。。。包括HTML
您可能还有其他一些div包含受打印样式影响的div.content。@BoltClock好的,中有很多div
s。content
这就是我试图排除其内容的原因elements@AshkanMobayen Khiabani:没关系。您有一个包含div.content的div(您现在在中编辑的HTML显示了这一点)。由于另一个div为:not(.content),它将接收display:none样式,并且您的content div将被隐藏。你还需要给那个div添加一个类,这样它就不会受到影响。哦,我搞错了。现在我明白你的意思了。如何将父母也排除在外?
var elements = $('div:not(.content) *').filter(function(index, element) {
return $(this).closest('div.content').length == 0;
});