排除项目及其内容元素

时间:2016-07-24 16:59:31

标签: javascript jquery jquery-selectors

我的页面中有很多元素,我试图只制作一个div,包括所有可打印的内容。

我有这个css:

@media print
{    
    .no-print, .no-print *
    {
        display: none !important;
    }
}

现在</body>之前我想运行一个jQuery代码,以便将.no-print类添加到每个div.content及其包含的元素。

排除.content我知道我必须做什么:

$('div:not(.content)').addClass('no-print');

但是为了排除我试过的内容:

$('div:not(.content,.content *)').addClass('no-print');

$('div:not(.content),div:not(.content *)').addClass('no-print');

但它们都没有达到预期效果。代码将.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>

1 个答案:

答案 0 :(得分:1)

您可以使用过滤器:

launchctl setenv PATH "$PATH"

&#13;
&#13;
var elements = $('div:not(.content) *').filter(function(index, element) {
      return $(this).closest('div.content').length == 0;
});
&#13;
$(function () {
  var elements = $('div:not(.content) *').filter(function(index, element) {
    return $(this).closest('div.content').length == 0;
  });
  
  elements.each(function(index, element) {
       console.log(index + ' --->  ' + element.outerHTML.substring(0, 30) + '....');
   });
});
&#13;
&#13;
&#13;