2013-09-21 3 views
2

делать() мой lessons на codeschool, следующее не работаетПутаница с по методу

$(document).ready(function() { 
    $("#tour").on("click", "button", function() { 
    $(".photos").slideToggle(); 
    }); 
    $(".photos").on("mouseenter", "li", function() { 
    $(this).find("span").slideToggle(); 

    $(".photos").on("mouseleave", "li", function() { 
    $(this).find("span").slideToggle(); 
    }); 
    }); 
}); 

а в следующем, по-видимому правильно.

$(document).ready(function() { 
    $("#tour").on("click", "button", function() { 
    $(".photos").slideToggle(); 
    }); 
    $(".photos").on("mouseenter", "li", function() { 
    $(this).find("span").slideToggle(); 

    })   .on("mouseleave", "li", function() { 
    $(this).find("span").slideToggle(); 
    }); 
}); 

Он смотрит на меня, как будто они просто взять ярлык, оставив из второй $(".photos"). Я вижу, как может быть неэффективно вызывать что-то в два раза, но это тоже ошибка?

+1

Посмотрите внимательно через код - ваш первый пример структурирован по-разному в вложенности вызовов. –

+0

Было бы неэффективно называть '$ (". Photos ")' несколько раз, если результаты остались прежними. Если добавлено больше '.photos', вам нужно снова вызвать' $ (". Photos") ', чтобы получить обновленные результаты. –

ответ

3

Нет, это не ошибка, проблема в том, что вы устанавливаете новый обработчик событий mouseleave на каждое событие mouseenter.

$(".photos").on("mouseenter", "li", function() { 
    $(this).find("span").slideToggle(); 

    // Here 
    $(".photos").on("mouseleave", "li", function() { 
     $(this).find("span").slideToggle(); 
    }); 
}); 

Для Минимизация кода вы можете передать объект методу on:

$(".photos").on({ 
    mouseenter: function() { 
     $(this).find("span").slideToggle(); 
    }, 
    mouseleave: function() { 
     $(this).find("span").slideToggle(); 
    } 
}, 'li'); 
+1

или в этом случае просто '$ (". Photos "). On ('mouseenter mouseleave', 'li', function() {$ (this) .find (" span "). SlideToggle();});' – PSL

+1

@PSL Да, это хорошая альтернатива. – undefined

+0

Получил это. Я знал, что пропал без вести}) однажды меня поднимет. благодаря – dwilbank

Смежные вопросы