Javascript 每个 () 函数删除 link

Javascript each() function remove link

我在 prestashop 下有一个网站,我的下拉菜单有不同的类别,都可以点击。我想从 "Marques" 和 "Les Gammes" 类别中删除链接,只保留文本。我正在使用 each() 函数来 select 我所有的类别,但是这个 returns 是 li 中的数组和 [=15= 中的 ul ].

这里是 JSFiddle.

这里是js代码:

$('jms-mega-menu').ready(function () {
// Get each div
$('.notlink').each(function () {
    // Get the content
    var str = $(this).text();
    $(this).html(str);
 });
});

这是我的 html 代码示例。您可以在 fiddle.

上找到完整代码
<ul jms-mega-menu>
 <div>
  ...
   <ul class="mega-nav level1">
    <li class=" haschild group notlink"><a id="item-8" href="#">Marques</a>
     <ul>
      <li><a id="item-9" href="#">Apple</a></li>
      <li><a id="item-10" href="#">Samsung</a></li>
     </ul>
    </li>
   </ul>
   <ul>
   ...

一种解决方案是使用 unwrap 删除文本周围的 a 标签。请注意 .notlink > a 的使用仅影响作为 .notlink 的直接子节点的锚点,而不影响嵌套列表:

$('.notlink > a').contents().unwrap();

http://jsfiddle.net/orvrj7qs/5/

另一个可能更具扩展性的选项是使用 replaceWith,这将允许您在需要时对文本进行额外的修改:

$('.notlink > a').replaceWith(function(){
    return $(this).text();   
});

在这种情况下,我们只需将锚点替换为锚点内的文本即可。

http://jsfiddle.net/orvrj7qs/6/