autocomplete, обработка элемента списка при фокусе
Добрый день.
Делаю список autocomplete с картинками:
.data( "ui-autocomplete" )._renderItem = function( ul, item ) {
return $( "<li>" )
.data( "ui-autocomplete-item", item )
.append( "<div class=\"autocomplidiv\"><a>"+"<img class=\"autocompliimg\" src= \""+item.icon+"\"/>" +" <br/>" +item.label + "</a></div>" )
.appendTo( ul );
При этом пытаюсь при фокусе элемента списка добавить ему класс:
focus: function( event, ui ) {
$(ui.item).addClass("ui-state-focus");
}
но класс не добавляется. Подскажите пожалуйста, что я неправильно делаю? |
culver, у фокуса
ui.item это обьект данных строки на которую навели но не сама строка можно поискать по содержанию
focus: function( event, ui ) {
$('li:contains("'+ui.item.label+'")').addClass("ui-state-focus");
}
|
Спасибо, работает.
Но получается, что прямого доступа из функции, к элементу, получившему фокус нет? Странно, что-то не верится. |
culver,
выведите в консоль да посмотрите ui кроме label и value никакой больше информации |
Вопрос почти риторический, но всё же.
Пока я не делал обработку фокуса, класс ui-state-focus добавлялся к li автоматически, подозреваю, что есть обработчик фокуса по умолчанию, где и добавляется этот класс, интересно как? |
culver,
return $( "<li>" )
return $( "<li>" , {class : 'ui-state-focus'})
и не мучать фокус |
Если класс добавлять в _renderItem то все элементы списка его получат, а мне нужно только тот, что в фокусе.
Сейчас это выглядит у меня так:
$('.ui-menu-item').removeClass("ui-state-focus")
$('li:contains("'+ui.item.label+'")').addClass("ui-state-focus");
а дальше с помощью стилей подсвечиваю элемент с фокусом.
.ui-autocomplete .ui-state-focus div{
font-weight:bold;
background-color: #eeeeee;
}
|
Или Вы хотите сказать, что рендер отрабатывается каждый раз при фокусе, а не только при начальном формировании списка?
|
culver,
может вам hover нужен .ui-autocomplete li div:hover{ font-weight:bold; background-color: #eeeeee; } и никаких add и remove |
но hover не будет реагировать на перебор списка с помощью клавиатуры.
|
| Часовой пояс GMT +3, время: 00:25. |