2016-05-18 5 views
1

ich mit Sprachoptionen paar Listen haben:Element Text ersetzen mit contains() Wähler und replace()

<ul class="dropdown-menu"> 
    <li><a href="#">English (English)</a></li> 
    <li><a href="#">Polski (Polish)</a></li> 
</ul> 

Ich versuche, jede English (English)-EN zu ändern, aber ohne Ergebnisse

$('a:contains("English (English)")').html().replace('English (English)', 'EN'); 

Was mache ich falsch?

Antwort

1

Sie aktualisieren den Elementtext nicht, sondern aktualisieren nur die zurückgegebene Zeichenfolge. Verwenden Sie html() mit einer Funktion zum Aktualisieren auf dem alten HTML-Inhalt.

$('a:contains("English (English)")').html(function(i, v) { 
 
    return v.replace('English (English)', 'EN'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="dropdown-menu"> 
 
    <li><a href="#">English (English)</a> 
 
    </li> 
 
    <li><a href="#">Polski (Polish)</a> 
 
    </li> 
 
</ul>

1

$(".dropdown-menu").find('li a').filter(function() { 
 
    return $(this).text() == 'English (English)'; 
 
}).text('EN');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="dropdown-menu"> 
 
    <li><a href="#">English (English)</a> 
 
    </li> 
 
    <li><a href="#">Polski (Polish)</a> 
 
    </li> 
 
</ul>

Verwendung .filter()

1

können Sie verwenden replaceWith() Inhalt jedes div zu ersetzen:

$('a:contains("English (English)")').replaceWith('<a href="#">EN</a>');