2017-09-07 3 views
2

Die <span> + </span> außerhalb des <a></a> Tag hinzugefügt Zugabe, wie kann ich die <span> Show innerhalb des Tags machen?wie das ist <span> +</ span> Tag innerhalb der <a> Tag

Auf diese Weise:

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

Mein Code:

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

Verwenden '.append()' statt '.after()'. ** Lese den doco. ** Wenn du jQuery verwenden willst, verbringe ein paar Minuten damit, durch die [Liste der DOM-Manipulationsmethoden] (http://api.jquery.com/category/manipulation/) zu blättern. Oder überfliegen Sie die [vollständige Liste der Selektoren und Methoden] (http://api.jquery.com/), um herauszufinden, welche für Sie nützlich sein könnten. – nnnnnn

+0

@nnnnnn es funktioniert. Aber der Inhalt wird nicht erweitert, indem man ** + ** – Alex

Antwort

2

Hier gehen Sie mit einer Lösung

$(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>

Sie müssen append verwenden, anstatt after und für die Suche nach der li Verwendung closest('li') statt parent.

Anstatt mit parent zu verfahren, verwenden Sie closest.

Hoffe, das wird Ihnen helfen.

+0

Welcome Buddy :) – Shiladitya

+0

nur ein Zweifel, Freund, wenn ich wollte auf diese Weise hinzufügen. ' + über uns' – Alex

+0

@ Alex - ersetzen Sie die '.append()' und 'verwenden .prepend()' ' + über uns machen' – bellabelle

1

Versuchen Sie es mit .append() -Funktion statt .after().

Append documentation

+0

es funktioniert. Aber der Inhalt wird nicht durch Drücken von ** + ** erweitert. – Alex

+1

Sie zielen auf das übergeordnete Element mit .parent(), aber jetzt haben Sie eine extra verschachtelte Anweisung hinzugefügt, so dass Sie zwei Eltern oben anvisieren müssen. z.B. .parent() parent() oder die Funktion .closest() verwenden – LayA

0

In Ihrem jquery ersetzen die after zu append auf die span innerhalb des a Tag hinzufügen zu machen. Und aktualisiert Ihre jquery, um den Inhalt zu erweitern. Siehe untenstehenden Code.

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

prepend' Hallo @ Alex - Anders ausgedrückt: Verwenden Sie '.parent()'.eltern() '' '' '' s' '' s' '' '' – bellabelle

+0

Hallo @bellabelle Danke :) Ich habe nicht die erforderliche Punktzahl für eine +1 :( – Alex

+0

@Alex, Es ist okay, ich möchte nur meine Idee zu teilen – bellabelle