jQuery 循环创建 div 并将内容附加到它们

Posted

技术标签:

【中文标题】jQuery 循环创建 div 并将内容附加到它们【英文标题】:jQuery loop to create divs and append content to them 【发布时间】:2014-07-17 19:13:08 【问题描述】:

我正在尝试创建一个 jQuery 循环:

    在相关的 WordPress 帖子中搜索任何图像或 iframe 为每一个创建一个新的 div 并将图像或 iframe 插入到 div 中 在视觉上重新排序,以便这些新创建和新填充的 div 出现在我想要它们的位置(在本例中位于帖子和帖子标题上方)。

我已经尝试了一个多星期来完成这个,并且已经接近了,但总是有问题。

jQuery("document").ready (function()
   jQuery(".para img, iframe").each(function()
      jQuery(this).prependTo(jQuery(this).parents(".wrapper940"));

      var ndiv = jQuery("<div></div>");
      jQuery(ndiv).append(this);
   )
);

所以在上面的代码中,我在 .para 类中搜索任何图像或 iframe,然后在它们上运行一个“每个”函数以将它们添加到帖子的父级 (.wrapper940),然后一旦它们启动在那里我尝试为每个图像/iframe 创建一个新的 div。

使用这个特定版本的代码,它根本不显示图像或 iframe,所以我假设我需要以某种方式“打印”ndiv 元素?我的图像和 iframe 是否消失在变量中,因此不再显示?

对于迂回和可能过于具体的帖子感到抱歉;我对自己正在处理的问题了解得不够多,无法提出更尖锐的问题。

【问题讨论】:

我不知道你的 html 结构是什么,但是一旦你创建了新元素,你必须将它们附加到现有的 DOM 元素中。 您需要将选择器从 '.para img, iframe' 更改为 '.para img, .para iframe' josmh - 谢谢,但这并不能解决主要问题 这就是我发表评论的原因;)我正在努力回答这个问题。 @pmandell - 你能更具体一点吗?我以前有这个(也没有工作):jQuery(".para img, iframe").each(function() var ndiv = jQuery("&lt;div&gt;&lt;/div&gt;"); jQuery(ndiv).append(this); jQuery(ndiv).prependTo(jQuery(this).parents(".wrapper940")); ) 【参考方案1】:

您首先将 img 或 iframe 附加到您的“.wrapper940”,然后立即将您的 img/iframe 附加到未连接到任何东西的新创建的 div 中。您的第一个操作完全被第二个操作撤消(通过将其附加到 div,您会自动将其从包装器中删除)。我假设您实际上希望首先将所有图像和帧附加到一个新的 div 项,然后该 div 项才是实际放入包装器中的那个...

jQuery("document").ready (function()
   jQuery(".para img, iframe").each(function()
      // First I create the div element.
      var ndiv = jQuery("<div></div>");

      // Now I put the div element into the wrapper, instead of the 'this'
      ndiv.prependTo(jQuery(this).parents(".wrapper940"));

      // Last I put 'this' into the div.
      ndiv.append(this);
   )
);

【讨论】:

天哪!就这样结束了为期一周的疯狂沮丧。很快。谢谢!! Np 伙计,我做过很多次同样的事情。有时很难看到。 感谢您的解释 - 现在我明白了。 快速跟进问题:如果我现在想定位这些新创建的 div 并向 :first 添加一个类,我该怎么做?我可以在 .each 中执行此操作,还是需要在循环之外执行?我是否需要 jQuery("ndiv, or this, or the class I added to the new divs")??非常感谢您的帮助。 您可能希望在循环之外执行此操作,但您需要以某种方式选择您的 div。一旦你这样做了,你可以使用 JQuery 的 first() 函数来影响找到的第一个项目。

以上是关于jQuery 循环创建 div 并将内容附加到它们的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 取类名,并将其名称附加到特定的 css 规则? [复制]

循环遍历嵌套的 js 对象并使用 Jquery 使用自定义 html 附加 div

如何将类添加到已经在 jQuery 中调用容器 div 的附加变量

使用类循环遍历每个元素并附加其文本JQUERY

如何替换 div 的内容而不是使用 JQuery 附加一个值?

如何将一个div的内容克隆到另一个div