#javascript #leaflet #jquery-selectors #dom-manipulation
#javascript #листовка #jquery-селекторы #dom-манипуляция
Вопрос:
Я пытаюсь создать экземпляр easyButton, который изменяет значение выпадающего списка на определенный параметр. Метод, который я использую для изменения значения параметра, работает вне экземпляра easyButton в другом месте кода. easyButton также выводит ожидаемые значения на консоль и в остальном работает нормально. Если используется для вызова другой функции, эта функция выполняется, но по-прежнему не изменяет значение выпадающего списка. Я действительно не уверен, почему это происходит и как это исправить. Упрощенные фрагменты кода выглядят следующим образом:
HTML; Выпадающий список
<select id="select">
<option id="1">Option 1</option>
<option id="2">Option 2</option>
<option id="3">Option 3</option>
</select>
JS скрипт; Листовка easyButton.
L.easyButton('<img src="./images/HomeIcon.png">', function(btn, map){
$("#select option[id=3]").attr('selected', 'selected');
}).addTo(mymap);
Главное, что нужно подчеркнуть, это то, что селектор, $("#select option[id=5]").attr('selected', 'selected');
, работает до тех пор, пока я не вставлю его в листовку easyButton.
Помощь была бы очень признательна, особенно если я смогу понять, что я делаю неправильно и что я должен делать в будущем.
Комментарии:
1. Вы не закрываете выделение jquery с помощью a
"
это опечатка в вопросе или в вашем коде? Это должно быть:$("#select option[id=3]").attr('selected', 'selected');
2. Прошу прощения, это была опечатка во время моего упрощения проблемы. К сожалению, это не причина. Я только что обновил его.
3. Для меня это работает: jsfiddle.net/falkedesign/nzrbpw6v
4. ОК. Это действительно интересно. Это работает до тех пор, пока вы не измените значение вручную, скажем, на 2, но затем оно перестает работать. Я не замечал этого раньше, поскольку он уже начинается с id = 3 в моей родной задаче (например, это кнопка «Домой», а страница начинается с «Домой»). Есть идеи, почему он перестает работать?
Ответ №1:
Измените идентификатор на значение:
<select id="select">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
А затем вызовите:
L.easyButton('<img src="./images/HomeIcon.png">', function(btn, map){
$("#select").val(3)
}).addTo(map);
Комментарии:
1. Я просто что-то пробую, так как это явно исправление, но я не могу вставить его напрямую из-за нескольких сложностей. Я отчитаюсь, я просто хотел сообщить вам, что я не ушел в самоволку.
2. Спасибо. Я не уверен, почему исходное решение перестало работать после ручного изменения выпадающего списка, но это решение работает отлично.