Javascript each()函数删除链接

时间:2015-03-09 16:44:59

标签: javascript jquery css each

我在prestashop下有一个网站,我的下拉菜单有不同的类别,都是可点击的。我想删除" Marques"的链接。和#34; Les Gammes"类别,只留下文字。我使用each()函数选择了我的所有类别,但这会在li内的ulli内返回一个数组。

这是JSFiddle

这是js代码:

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

以下是我的html代码示例。你可以在小提琴上找到完整的代码。

<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>
   ...

1 个答案:

答案 0 :(得分:1)

一种解决方案是使用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/