【问题标题】:just wrap element that have not been wrapped只包裹尚未包裹的元素
【发布时间】:2018-06-20 02:00:03
【问题描述】:

我已经用 jquery wrap 函数包装了 img 元素。

$('.post').each(function(){
   $(this).find('img').wrap('<span/>');
};

HTML

<div id ='post1' class='post'>
   aaaaaaaa aaaaaaa
   **<span>**<img/>**</span>**
   aaaaaaaa aaaaaaa
</div>

通过无限滚动加载更多页面后,这不起作用。所以我必须添加以下脚本

$(document).on('load resize', function){

   $('.post').each(function(){
      $(this).find('img').wrap('<span/>');

   });
});

但是 span 会在每次加载下一页时添加,所以如果假设第一页上的帖子图像已经用 jquery wrap span 包裹,然后在加载第二页时,将使用“on load function”的跨度包裹帖子图像,但也会重复将图像包裹在第一页上,依此类推

<div id ='post1' class='post'>
   bbbbbb bbbbbb
   <span><span><span><img/><span><span></span>
   bbbbbb bbbbbb
</div>

Load page 2...

<div id ='post2' class='post'>
   aaaaaaaa aaaaaaa
   <span><span><img/><span></span>
   aaaaaaaa aaaaaaa
</div>

load page 3...

<div id ='post3' class='post'>
   cccccc cccccc
   <span><img/><span>
   cccccc cccccc
</div>

我只想在加载更多页面后包装没有被'span'包装的img元素。我该怎么办?

【问题讨论】:

  • 您可以跟踪“无跨度”图像,或者在包装之前检查 $(this) 的父级。
  • @Teemu ,我想我找到了解决方案。谢谢你的回复兄弟..

标签: javascript jquery html


【解决方案1】:

在帖子中添加一个类,告诉脚本它已经被处理过:

$(document).on('load resize', function){
    $('.post:not(.wrapped)').each(function(){
        $(this).addClass("wrapped").find('img').wrap('<span/>');
    });
});

【讨论】:

  • 我试过了。这完美地工作。谢谢你帮助我
猜你喜欢
  • 1970-01-01
  • 2016-04-06
  • 1970-01-01
  • 2018-02-11
  • 2014-07-30
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多