jQuery .wrap()不起作用

Cor*_*ing 13 jquery

我可能做错了什么,但我已经尝试了各种各样的东西,似乎无法获得包装的jQuery对象的集合.以下只输出链接HTML,解包.有任何想法吗?

$.each(sitemapSections, function(i) {
  var $sitemapSection = $(sitemapSections[i]);
  var $primary = $sitemapSection.find('a[data-level="1"]').wrap('<h3></h3>');

  $dropdownSections[i].html($primary);
});
Run Code Online (Sandbox Code Playgroud)

编辑 - 这是标记(清理):

<li id="product-solutions"><a href="#link" class="alpha grid-6">Products &amp; Solutions</a>

  <div id="ps-dropdown" class="dropdown-menu grid-20">
    <div class="ps-dropdown-section">

    </div><!-- .ps-dropdown-section -->

    <div class="ps-dropdown-section">

    </div><!-- .ps-dropdown-section -->

    <div class="ps-dropdown-section">

    </div><!-- .ps-dropdown-section -->
  </div><!-- .dropdown-menu -->
</li>
Run Code Online (Sandbox Code Playgroud)

更新 - 我明白了!提到parent()的评论是我所遗漏的.这是最终的代码:

$.each(sitemapSections, function(i) {
  var $sitemapSection = $(sitemapSections[i]);
  var $primary = $sitemapSection.find('a[data-level="1"]').wrap('<h3></h3>').parent();

  $dropdownSections[i].html($primary);
});
Run Code Online (Sandbox Code Playgroud)

fas*_*ion 43

jquery .wrap()将INNER元素返回给您,因此看起来没什么变化.

$("<div>").wrap('<span>') 

===> 

[<div></div>]
Run Code Online (Sandbox Code Playgroud)

看起来它不起作用.

但:

$("<div>").wrap('<span>').parent()

===>

[<span><div></div></span>]
Run Code Online (Sandbox Code Playgroud)

它确实有效.

  • 应该有jQuery文档中的示例!它写道:`这个方法返回用于链接目的的原始元素集.但是当你想得到"新对象"时,很难想出`parent()`是有用的. (3认同)
  • @instead同意了.如果您正在包装的内容已经在DOM中并且您将其保留在那里,那么换行是直观的.如果你正在包装一些你刚刚生成但尚未在DOM中生成的元素,并且想要插入标记,那么你只需将选择包裹起来就不那么清楚了. (3认同)