2017-09-07 283 views
2

<span> + </span>是外部加入的<a></a>標籤裏面,我怎麼可以讓<span>顯示在標籤內?添加<span> +</ span>標籤<a>標籤

這樣:

<a>about us <span>+</span></a> 

我的代碼:

jQuery(document).ready(function ($) { 
 
\t \t $('.accord ul li:has(ul)').addClass('expand').find('ul').hide(); 
 
\t \t $('.accord ul li.expand>a').after('<span> + </span>'); 
 

 
\t \t $('.accord ul').on('click', 'li.collapse span ', function (e) { 
 
\t \t \t $(this).text(' + ').parent().addClass('expand').removeClass('collapse').find('>ul').slideUp(); 
 
\t \t \t e.stopImmediatePropagation(); 
 
\t \t }); 
 

 
\t \t $('.accord ul').on('click', 'li.expand span', function (e) { 
 
\t \t \t $(this).text(' - ').parent().addClass('collapse').removeClass('expand').find('>ul').slideDown(); 
 
\t \t \t e.stopImmediatePropagation(); 
 
\t \t }); 
 

 
\t \t $('.accord ul').on('click', 'li.collapse li:not(.collapse)', function (e) { 
 
\t \t \t e.stopImmediatePropagation(); 
 
\t \t }); \t \t 
 
\t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <!-- HTML --> 
 
    <div id="Accord" class="accord"> 
 
     <ul> 
 
     <li><a href='#'>about us</a> 
 
      <ul class='sub'> 
 
      <li><a href='#'>Text</a><ul><li><a>Text</a></li></ul></li> 
 
      </ul> 
 
     </li> 
 
     </ul> 
 
    </div>

+2

使用'.append()',而不是'。經過()'。 **閱讀doco。**如果您要使用jQuery,請花費幾分鐘瀏覽[DOM操作方法列表](http://api.jquery.com/category/manipulation/)。或瀏覽[選擇器和方法的完整列表](http://api.jquery.com/)以瞭解哪些對你有用。 – nnnnnn

+0

@nnnnnn它的工作原理。但內容不會按** ** ** – Alex

回答

2

在這裏,你去了一個解決方案

$(document).ready(function ($) { 
 
    $('.accord ul li:has(ul)').addClass('expand').find('ul').hide(); 
 
    $('.accord ul li.expand>a').append('<span> + </span>'); 
 

 
    $('.accord ul').on('click', 'li.collapse a span ', function (e) { 
 
    $(this).text(' + ').closest('li').addClass('expand').removeClass('collapse').find('>ul').slideUp(); 
 
    e.stopImmediatePropagation(); 
 
    }); 
 

 
    $('.accord ul').on('click', 'li.expand a span', function (e) { 
 
    $(this).text(' - ').closest('li').addClass('collapse').removeClass('expand').find('>ul').slideDown(); 
 
    e.stopImmediatePropagation(); 
 
    }); 
 

 
    $('.accord ul').on('click', 'li.collapse li:not(.collapse)', function (e) { 
 
    e.stopImmediatePropagation(); 
 
    }); \t \t 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="Accord" class="accord"> 
 
<ul> 
 
    <li><a href='#'>about us</a> 
 
    <ul class='sub'> 
 
     <li><a href='#'>Text</a><ul><li><a>Text</a></li></ul></li> 
 
    </ul> 
 
    </li> 
 
</ul> 
 
</div>

您需要使用append而不是after和尋找李使用closest('li')代替parent

而不是遍歷使用parent使用closest

希望這會幫助你。

+0

歡迎好友:) – Shiladitya

+0

只是一個疑問,朋友,如果我想以這種方式添加:' +關於我們' – Alex

+0

@λlex - 替換'.append()'並使用'.prepend()'使' +關於我們' – bellabelle

1

嘗試使用.append()函數來代替。經過()。

Append documentation

+0

擴大它的作品。但內容不會通過按** + ** – Alex

+1

來擴展。您正在使用.parent()定位父元素,但是現在您已經添加了一個額外的嵌套語句,因此您必須定位上面的兩個父項。例如(),或使用函數.closest() – LayA

0

在你jquery更換afterappend使span添加a標籤內。並更新您的jquery以使內容也擴大。見下面的代碼。

jQuery(document).ready(function ($) { 
 
\t $('.accord ul li:has(ul)').addClass('expand').find('ul').hide(); 
 
\t $('.accord ul li.expand>a').append('<span> + </span>'); 
 

 
\t $('.accord ul').on('click', 'li.collapse span ', function (e) { 
 
\t \t $(this).text(' + ').parents('li').addClass('expand').removeClass('collapse').find('>ul').slideUp(); 
 
\t \t e.stopImmediatePropagation(); 
 
\t }); 
 

 
\t $('.accord ul').on('click', 'li.expand span', function (e) { 
 
\t \t $(this).text(' - ').parents('li').addClass('collapse').removeClass('expand').find('>ul').slideDown(); 
 
\t \t e.stopImmediatePropagation(); 
 
\t }); 
 

 
\t $('.accord ul').on('click', 'li.collapse li:not(.collapse)', function (e) { 
 
\t \t e.stopImmediatePropagation(); 
 
\t }); \t \t 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id="Accord" class="accord"> 
 
<ul> 
 
    <li><a href='#'>about us</a> 
 
    <ul class='sub'> 
 
     <li><a href='#'>Text</a><ul><li><a>Text</a></li></ul></li> 
 
    </ul> 
 
    </li> 
 
</ul> 
 
</div>

+0

Hello @alex - 另一種方式,而不是'.parent()',使用'。父母()用's'來稱呼父母'li', – bellabelle

+0

你好@bellabelle謝謝:)我沒有+1的必要得分:( – Alex

+0

@亞歷克斯,好吧,我只想分享我的想法 – bellabelle