Как выделить div только один раз с помощью jquery-ui?

0

Я хочу анимировать документ в div и выделить его. Ниже мой код, и он хорошо работает, он подчеркивает div дважды.

Любая идея почему? Как я могу просто выделить div только один раз?

$(".button-main-menu").click(function(){
     $("html, body").animate({ scrollTop: $(".box-main-menu").offset().top }, 1000, function(){
        $(".box-main-menu").effect("highlight", {}, 1000);
     });
     return false;
});
  • 1
    Как насчет использования $(document) вместо $("html, body") ?
Теги:
highlight

3 ответа

2
Лучший ответ

Как вы используете как html и body селекторы, он стреляет в два раза. Поэтому либо используйте html, либо тело.

$(document) здесь не будет работать. - Ошибка скрипки

Рабочая демонстрация

$(".button-main-menu").click(function(){
     $('html').animate({ scrollTop: $(".box-main-menu").offset().top }, 1000, function(){
        $(".box-main-menu").effect("highlight", {}, 1000);
     });
});
  • 0
    Спасибо за ответ!
2

Используйте метод jQuery one - http://api.jquery.com/one/

$(".button-main-menu").one('click', function(){
     $("html, body").animate({ scrollTop: $(".box-main-menu").offset().top }, 1000, function(){
         $(".box-main-menu").effect("highlight", {}, 1000);
     });
     return false;
});
  • 0
    Спасибо за ответ!
  • 0
    Можете ли вы пометить как правильный ответ, если это решило вашу проблему?
1

Вы используете селектор $("html, body") который выбирает первый <html> а затем выбирает <body>.

Это означает, что функция анимации выполняется дважды.

Есть 3 способа заставить его работать:

  1. используйте $("html body") - это выберет тело в теге html.
  2. используйте $("body") - это выберет тег body, так как он должен быть только один раз.
  3. используйте $(document) - это выберет весь документ.

На мой взгляд, номер 3 является самым простым и чистым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню