#jquery #drop-down-menu
#jquery #выпадающее меню
Вопрос:
Я делаю свои первые шаги в jQuery, поскольку у меня есть событие, с которым мне нужно разобраться на веб-сайте, который я пытаюсь собрать. Все это только для учебных целей.
Я взял (бесплатную) тему начальной загрузки для веб-сайта электронной коммерции и пытаюсь применить к ней некоторые события jQuery, чтобы узнать, как все это сочетается. Некоторые вещи работают хорошо, а другие — совсем нет. Моя цель здесь — обработать событие выпадающего списка (select) и перезагрузить элемент div на основе результата. До сих пор я не мог ни действовать ПО списку, ни обрабатывать события ИЗ него.
Выбор содержится в приведенном ниже разделе. Существует метка под названием «sortby» и поле выбора, называемое «sortorder».
<div class="shop-top">
<div class="shop-shorter">
<div class="single-shorter">
<label id = "sortby">Sort By :</label>
<select name="sortorder" id="sortorder">
<option selected="selected">Name</option>
<option>Barcode</option>
<option>Price</option>
</select>
</div>
</div>
</div>
Это три примера сценариев, которые я пытаюсь заставить работать, чтобы немного понять jQuery. Я поместил их все в раздел head и включил jquery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript" >
$(document).ready(function(){
$("#sortby").click(function(){
$("#sortby").hide();
});
});
</script>
Этот работает нормально. Я нажимаю на ярлык, и ярлык исчезает.
<script type="text/javascript" >
$(document).ready(function(){
$("#sortby").click(function(){
$("#sortorder").hide();
});
});
</script>
Этот вариант не работает. Я нажимаю на ярлык, и список выбора не исчезает.
<script type="text/javascript" >
$("#sortorder").change( function () {
var option = $("#sortorder").val();
if(option.toLowerCase() == "name"){
alert("name");
}
});
</script>
Этот вариант не работает. Я выбираю опцию «имя» из списка выбора, и предупреждающее сообщение не отображается.
На самой странице, если я проверю выпадающий список, я получу следующее:
<div class="nice-select" tabindex="0"><span class="current">Name</span><ul class="list"><li data-value="Name" class="option selected">Name</li><li data-value="Barcode" class="option">Barcode</li><li data-value="Price" class="option">Price</li></ul></div>
Этот «хороший выбор» взят из файла .css, который был включен в тему начальной загрузки, он явно не упоминается в файле, откуда взят приведенный выше код. Приведенному выше блоку предшествует фактический код в окне проверки элемента
<select name="sortorder" id="sortorder" style="display: none;">
<option selected="selected">Name</option>
<option>Barcode</option>
<option>Price</option>
</select>
Итак, две вещи: я не понимаю механизма, посредством которого элемент select дублируется этим классом, и кажется, что этот дублированный код — это то, что действительно можно использовать на сайте.
И как мне на самом деле взаимодействовать с рассматриваемым элементом?
Редактировать: я решил оставить это с промежуточным решением на данный момент. Я только что добавил кнопку, которая выполняет (часть) работу по извлечению значения списка выбора при нажатии.
$(document).ready(function() {
$("#apply").on("click", () => {
var sortType = $('#sortorder').val();
if (sortType == 'Name') {
$("#product-grid").load
alert("sort by name");
} else {
$("#product-grid").load
alert("sort by price");
}
});
});
Для завершения, вот код, который не работает
$(document).ready(function() {
/*$("#sortorder").niceSelect();
$("#sortorder").on("change", () =>{
var selected = $("#myselect").val();
if (sortType == 'Name') {
$("#product-grid").load
alert("sort by name");
} else {
$("#product-grid").load
alert("sort by price");
}
})*/
Комментарии:
1. Кажется, это работает, я могу получить предупреждение.
2. Возможно, для создания выпадающего списка html используется плагин jQuery
<select>
для улучшения возможностей стилизации jqueryniceselect.hernansartorio.com3. @charlietfl это почти наверняка так. В нижнем колонтитуле есть ссылка на файл JS. В нем ошибка (как в ссылке, так и в самом файле), поэтому я не нашел его с помощью поиска. <!— Nice Select JS —> <script src=»js/nicesellect.js «></script> Это ответ на первый вопрос!
4. @Swati это повлияет на все элементы этого класса. На странице есть несколько элементов с хорошим выбором, и мне нужно иметь возможность ссылаться на конкретный. Мне также нужно иметь возможность воздействовать на события конкретно из этого элемента.
5. Для нескольких случаев попробуйте
$(this).closest('.single-shorter').find('.nice-select').hide()
скрыть соответствующий экземпляр