#jquery
#jquery
Вопрос:
var hide = false;
$(".list_rowtext").hover(function () {
if (hide) clearTimeout(hide);
$(this).children("img").fadeIn();
},
function () {
hide = setTimeout(function ()
{ $(this).children("img").fadeOut("slow") }, 250);
});
.list_rowtext
это тег div. На самом деле я хочу, чтобы при наведении курсора мыши на div отображалось изображение, а при удалении фокуса мыши изображение исчезало, и этот тег div находится внутри listview itemtemplate
, что означает его повторение.
Оно отображает изображение при наведении курсора мыши на div, но изображение не исчезло, когда фокус мыши был удален с этого div.
Комментарии:
1. можете ли вы также предоставить свой HTML-код
2. Это может быть проблемой, а может и не быть — вы пропускаете точку с запятой в конце
fadeOut()
— отсутствие точек с запятой в сочетании с использованием{
в новой строке может привести к труднодоступности ошибок в JavaScript. Вы должны добавить;
затем и попробовать это еще раз — на этот раз это может сработать.3. добавление точки с запятой не помогло
4. <div class=»list_rowtext» style=»width: 16%; text-align: left; padding-left: 5px;»> <a href=»DisplayUnitsandLessons.aspx?id=<%#Eval(«CourseID»)%>»><span id=»Name»> <%#Eval(«Name»)%></span></a> amp;nbsp;amp;nbsp; <img onclick=»EditCourses(this);» width=»16″ id =»im» height =»16″ border =»0″ style=»выравнивание по вертикали: по центру; отображение: отсутствует;» alt =» » src=»../ ../images/edit.png»> </div> этот div находится внутри тега itemtemplate
Ответ №1:
Функция setTimeout всегда выполняется в глобальной области видимости, так что это окно, когда функция выполняется.
Используйте замыкание, чтобы указать на желаемую цель:
$(".list_rowtext").hover(
function () {
if (hide) clearTimeout(hide);
$(this).children("img").fadeIn();
},
function () {
var obj=this; //closure
hide = setTimeout(function ()
{ $(obj).children("img").fadeOut("slow"); }, 250);
}
);