【问题标题】:find the divs which do not have style display none and insert a style for page break on every second div找到没有样式的 div 显示 none 并在每隔一个 div 插入一个分页样式
【发布时间】:2012-09-19 04:17:34
【问题描述】:

最初所有的 div 都有 style display none 属性。如果其中有任何内容,我将通过 jquery show 方法启用 div, 我想找到没有样式 display:none 的 div,并且在每隔一个活动 div 之后, 我想为 page-break-after:always 插入一个 css 用于打印目的。当用户打印时,我希望一页中只有 2 个 div。 所以在这个例子中,我想在 par4 和 par8 上插入 css 分页符

(总而言之,找到没有样式的div不显示,并在每隔一个div插入一个分页样式)

<div id="parent">
<div class="flip" id="par1" style="display:none;">empty</div>                     
<div class="flip" id="par2">Image/content</div>                           
<div class="flip" id="par3" style="display:none;">empty</div>                       
<div class="flip" id="par4">Image/content</div>                            
<div class="flip" id="par5" style="display:none;">empty</div>                        
<div class="flip" id="par6">Image/content</div>                         
<div class="flip" id="par7" style="display:none;">empty</div>                             
<div class="flip" id="par8">Image/content</div>                                             
<div class="flip" id="par10" style="display:none;">empty</div> 
</div>

【问题讨论】:

  • 应该是 UL/LI,而不是 DIV/DIV。
  • 除了 HTML 之外,你有没有试过“任何东西”?
  • 向我们展示您的代码“如果有任何内容,则通过 jQuery 显示 div ”(对我来说,字符串“empty”也是内容)

标签: javascript jquery


【解决方案1】:

这里:

$( '#parent' ).children( ':visible:odd' ).css( 'page-break-after', 'always' );

现场演示: http://jsfiddle.net/KxGKG/2/

虽然我建议设置一个 CSS 类,而不是内联编写样式。设置/取消设置类比直接设置样式更容易。

【讨论】:

  • @undefined OP 没有指定可见的 DIV 总是偶数。
  • 是的,但是 jQuery 集合呢?
  • @undefined 啊,你是对的。 :odd 选择关于 jQuery 选择,而不是实际的 DOM 关系。我可以用这种改进来更新我的答案吗?
  • 谢谢!击中目标!非常感谢!
【解决方案2】:

带有 each 循环的 jQuery :visible 选择器可以解决问题。

$('.flip:visible').each(function(idx, elm) {
    if(idx & 1 == 1) { // every 2nd one
        $(this).css('page-break-after', 'always');
    }
});

编辑 第 n 个(偶数)选择更优雅(并且代码更短)。

【讨论】:

  • if (idx &amp; 1 == 1 )?真的吗?
  • @undefined 好吧,那就是 JavaScript。 i &amp; 1 返回 01,具体取决于 i 是偶数还是奇数。不错。
  • @ŠimeVidas 是的,我不知道,很好。
【解决方案3】:

也许这可以帮助你,但 CSS 不是更好的解决方案吗?

$(function() {
    $(".flip:nth-child(even)").css({ 'page-break-after': 'always' });
});

【讨论】:

  • OP 没有指定可见的 DIV 总是偶数。
  • 好的,$(".flip:visible:nth-child(even)") 怎么样?在选择每一秒(偶数)之前不应该过滤掉不可见的元素吗?
  • 没有。 :nth-child 仍然考虑 DOM 关系。因此,偶数子元素始终是偶数子元素,无论其在 jQuery 对象中的位置如何。
猜你喜欢
  • 2018-01-20
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 2016-10-01
相关资源
最近更新 更多