Ответ 1
Попробуйте
У меня есть список, сгенерированный php, элементы списка которого можно выбрать с помощью jquery selectable widget. Список для всех целей и целей:
<ul id="#select-image">
<li class="ui-widget-content">Item 1</li>
<li class="ui-widget-content">Item 2</li>
<li class="ui-widget-content">Item 3</li>
<li class="ui-widget-content">Item 4</li>
<li class="ui-widget-content">Item 5</li>
<li class="ui-widget-content">Item 6</li>
<li class="ui-widget-content">Item 7</li>
</ul>
И выбираемый jQuery объявляется как:
<script>
$(function() {
$("#select-image").selectable({
selected: function( event, ui ) {
var $variable = $('.ui-selected').innerHTML;
console.log($variable);
}
});
});
</script>
Событие происходит после выбора элемента списка, в примере, который он выводит на консоль браузера. Однако выход имеет значение "undefined". Селектор $('.ui-selected').
правильный, поскольку он отображается как объект в консоли браузера. Где я ошибаюсь?
Попробуйте
Используйте .val()
вместо .innerHTML
для получения значения выбранной опции
Используйте .text()
для получения текста выбранной опции
Спасибо за исправление:)
Параметр ui
имеет свойство, называемое selected
, которое является ссылкой на выбранный элемент dom, вы можете вызвать innerHTML
на этом элементе.
Ваш код $('.ui-selected').innerHTML
пытается вернуть свойство innerHTML
элемента оболочки jQuery для элемента dom с классом ui-selected
$(function () {
$("#select-image").selectable({
selected: function (event, ui) {
var $variable = ui.selected.innerHTML; // or $(ui.selected).html()
console.log($variable);
}
});
});
Демо: Fiddle
$(function() {
$("#select-image").selectable({
selected: function( event, ui ) {
var $variable = $('.ui-selected').html();
console.log($variable);
}
});
});
или
$(function() {
$("#select-image").selectable({
selected: function( event, ui ) {
var $variable = $('.ui-selected').text();
console.log($variable);
}
});
});
или
$(function() {
$("#select-image").selectable({
selected: function( event, ui ) {
var $variable = $('.ui-selected').val();
console.log($variable);
}
});
});