#jquery
#jquery
Вопрос:
В версии jQuery 3.3 я устанавливаю параметры выбора с помощью следующих двух команд
$("#selection_input").empty();
$("#selection_input").append(data.options);
Можно ли заменить его на 1 команду?
Спасибо!
Комментарии:
1. Зачем вам это нужно? Что не так с использованием этих двух функций? Это легко читается и, вероятно, быстрее, чем использование одной функции.
Ответ №1:
Ответ — да. В приведенной ниже демонстрации при вводе мыши вызывается функция, которая использует empty и append вместе для восстановления параметров ранее сохраненных параметров выбора.
function removeOptions($select) {
var $optionsToRemove = $select.find('option:not(:selected)');
$optionsToRemove.remove(); //remove
}
function setSelectCurrentState($select) {
$select.data("currentOptions", $select.find('option'));
}
function restoreOptions($select) {
var oldOptions = $select.data("currentOptions");
if (oldOptions) {
//This line of code uses empty and then append to restore the options
$select.empty().append(oldOptions);
}
}
$(document).ready(function() {
var $hoverSelect = $('#hoverSelect');
$hoverSelect.mouseleave(function() {
setSelectCurrentState($hoverSelect); // save the current state
removeOptions($hoverSelect);
});
$hoverSelect.mouseenter(function() {
restoreOptions($hoverSelect);
});
});
body {
background-color: #99b;
}
form {
width: 150px;
margin: 0 auto;
}
h1,
h2 {
text-align: center;
}
#hoverSelect {
width: 150px;
height: 65px;
font-size: 1.2em;
}
#hoverSelect:hover {
height: 150px;
}
#wrapper {
width: 100%;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2>Hover to expand, click or shift click options to select, mouse out to minimize</h2>
<br />
<div id="wrapper">
<form>
<select id="hoverSelect" name="hoverSelect" multiple="multiple">
<option value="1">One</option>
<option value="2" class="two">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
<option value="6">Six</option>
</select>
</form>
</div>
<br />
<h2>Remembers the checked state of the options</h2>
Ответ №2:
Вы можете использовать .html()
для замены содержимого. Сначала он очистит его.
$("#selection_input").html(data.options);