показать скрытое изображение внутри div

#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);
      }
    );