2016-05-18 1 views
1

У меня есть несколько списков с вариантами языка:Заменить элемент текста с помощью содержит() селектор и заменить()

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

Я пытаюсь изменить каждый English (English) к EN, но без каких-либо результатов

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

Что я не так?

ответ

1

Вы не обновляете текст элемента, просто обновляя возвращаемую строку. Используйте html() с функцией обновления на основе старого содержимого html.

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

использование .filter()

1

Вы можете использовать ReplaceWith(), чтобы заменить содержимое любого DIV:

$('a:contains("English (English)")').replaceWith('<a href="#">EN</a>'); 
Смежные вопросы