2016-08-07 9 views
1

wie kann ich den "Li" Text ohne den "Span" Inhalt erhalten?Holen Sie Inhalt ohne den Inhalt der Kindelemente

HTML

<ul class="texts"> 
    <li>jimbo <span>Add text</span></li> 
    <hr /> 
    <li>mary jane <span>Add text</span></li> 
    <hr /> 
    <li>bill clinton <span>Add text</span></li> 
</ul> 

JS:

$(document).on('click','.texts li span',function() {  
     var current_content = $("#addReply textarea").val(); 
     var chosen_content = $(this).parent("li").html(); 
     $("#addReply textarea").val(current_content + "\n" + chosen_content) 
}); 

Antwort

0

Wenn Sie das wollen, Inhalt ohne nur der Bereich, der Klick war ed, können Sie contents und not (und text statt html verwenden, weil es den Text aller Einträge in der Menge zurückgibt, die Sie aufrufen [im Gegensatz zu html, die nur die HTM des ersten Eintrags im Satz zurückgibt]) :

var chosen_content = $(this).parent("li").contents().not(this).text(); 

Beispiel:

$(document).on('click', '.texts li span', function() { 
 
    var current_content = $("#addReply textarea").val(); 
 
    var chosen_content = $(this).parent("li").contents().not(this).text(); 
 
    $("#addReply textarea").val(current_content + "\n" + chosen_content) 
 
});
<ul class="texts"> 
 
    <li>jimbo <span>Add text</span> 
 
    </li> 
 
    <hr /> 
 
    <li>mary jane <span>Add text</span> 
 
    </li> 
 
    <hr /> 
 
    <li>bill clinton <span>Add text</span> 
 
    </li> 
 
</ul> 
 
<div id="addReply"> 
 
    <textarea cols=40 rows=5></textarea> 
 
</div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

0

Sie können das übergeordnete Element klonen, dann die span entfernen, und endlich den Inhalt:

var foo = $(this).parent("li").clone(); 
foo.find('span').remove(); 
var content = foo.text(); 
Verwandte Themen