Замена значений option в select
Мне нужно заменить имена option на их значения. Есть:
<select name="test">
<option value="one">blabla</option>
<option value="two">blabla</option>
</select>
Должно стать:
<select name="test">
<option value="one">one</option>
<option value="two">two</option>
</select>
И я совсем запутался. Изобрёл что-то дикое, какая-то из вариаций этого кошмара даже однажды сработала. Но элементы изменили имена лишь в коде страницы, а визуально элемент не «перерисовавлся»
$('select[name="test"] > option').each(function(index) {
$('select[name="test"] > option').eq(index).text = $('select[name="test"] > option').eq(index).val;
});
Ответы (2 шт):
Автор решения: Евгений Кулик
→ Ссылка
$('select[name="test"] > option').each(function() {
this.innerText = this.value
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<select name="test">
<option value="one">blabla</option>
<option value="two">blabla</option>
</select>
<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
<script src="scripts.js"></script>
</body>
</html>
Автор решения: Alex Krass
→ Ссылка
Вы как-то странно пользуетесь JQuery, сверяйтесь с документацией и что вы делаете, чтобы он правильно работал. А так вы пишите что-то и не понимаете зачем и как ваш код должен работать.
- В функции each есть возможность получать элемент, а не запрашивать три раза страницу и искать по индексу.
- Запрос данных является функциями, поэтому функцию text и функцию val вы используете неправильно - не как функции, а как поля, из-за чего они конечно работать не будут.
$('select[name="test"] > option').each(function() {
let el = $(this);
el.text(el.val());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="test">
<option value="one">blabla</option>
<option value="two">blabla</option>
</select>