抓取两个随机生成的div并将其包装在自定义div中

4

我想获取如下所示的两个随机生成的 div ID,并将它们包裹在我能够控制的自定义 div 内。我在 jQuery API 上搜索解决方案,但仍然没有任何思路。

以下是示例预览: 2 Randomly Generated ID's + Custom Class

如您所见,有两个 <div id="random_string"></div> 和一个自定义的 <div class="wrap_awm"></div>

由于我无法针对上面的两个ID进行定位,我不知道如何通知 jQuery,获取以上两个 div 并将它们放置在 ".wrap_awm" 内。就这么简单?


你是否只需要立即移动你自定义 div 前面的两个 div(移入你的自定义 div)? - travega
@travega 是的,没错! - dvlden
@NenaddvL 你可以使用 .prev() API 函数来获取元素的直接前一个同级节点。我已经给出了以下示例供你参考。 - travega
5个回答

4
你要找的是.prevAll(),它被称为:
var $wrap = $('.wrap_awm');
$wrap.prevAll(':lt(2)').appendTo($wrap);

它与:lt()选择器结合使用,仅使用前两个元素。


1
非常棒的答案!完美地运行了...我会去检查其他方法,但我喜欢这个。谢谢Jack。 - dvlden
1
@ErikE 听起来像是一个诡计问题 :) 在 jQuery 中的选择器应该适用于所有浏览器,除非你能够指出不同之处。 - Ja͢ck

4

正常工作。感谢您的回答,ErikE。 - dvlden

1
$(".wrap_awm")
  .prev("div")
     .appendTo(".wrap_awm")
     .end()
  .prev("div")
     .appendTo(".wrap_awm");

酷炫的Malk...尽管它只获取第一个div id并将其包装在类中,但第二个仍然保持不变。 - dvlden
啊 - 很好。这是最好的答案。 - Adam Rackis

0
您可以在jQuery API中使用.prev()函数来选择自定义div的前一个兄弟元素。然后,您可以将其存储并对其应用相同的.prev()函数,例如:
var previousSibling1 = $(".wrap_awm").prev();
var previousSibling2 = $(previousSibling1).prev();

现在您已经有了对前两个兄弟元素的引用,它们可以移动到您的自定义 div 中。


0

这很简单易读,但可能不是应该采用的方式...

$(document).ready(function () {
    var prev1 = $('.wrap_awm').prev().prev();
    var prev2 = $('.wrap_awm').prev();
    $('.wrap_awm').html(prev1).append(prev2);
});

JSFiddle

{{链接1:JSFiddle}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接