Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jQuery Scroll(), проблема в Опере (https://javascript.ru/forum/jquery/31043-jquery-scroll-problema-v-opere.html)

JEEN 24.08.2012 14:18

jQuery Scroll(), проблема в Опере
 
$(window).scroll(function () { 
      $("span").slideToggle(); 
      alert('dsf');
});

span выполнит 3 действия, вместо 1
а alert будет выскакивать 6 раз. В Google Chrome такой проблемы нет.

Это только у меня такой баг или это проблема оперы? в интернете не нашел ничего по этому багу.

P.S. и еще, дайте пожалуйста ссылку на онлайн интерпретатор JS, Jquery, html. Чтобы можно было тестировать код.

В документации есть пример с $("span").css("display", "inline").fadeOut("slow");
он и у меня работает нормально, но с другими функциями происходит многократный вызов

Deff 24.08.2012 14:43

JEEN,
Пробуйте так:
var TimeId;
$(window).scroll(function () {
      clearTimeout(TimeId);
      TimeId=setTimeout(function () {
      $("span").slideToggle(); 
      alert('dsf');
      },10)
});

Интересна версия Оперы - у мну в 11.5 - нет подобного

Deff 24.08.2012 14:45

Цитата:

Сообщение от JEEN
а alert будет выскакивать 6 раз. В Google Chrome такой проблемы нет.

Зы - ксать траблы cо Scroll могут быть из-за алерта - выводите сообщение в
div с position:fixed;

Allert прерывает события - и они могут возникать снова и снова

LittlePony 24.08.2012 14:51

Цитата:

Сообщение от Deff (Сообщение 200252)
Зы - ксать траблы cо Scroll могут быть из-за алерта - выводите сообщение в
div с position:fixed;

Allert прерывает события - и они могут возникать снова и снова

похоже, что алерт здесь только для отладки. Если так, то и вовсе лучше console.log()

JEEN 24.08.2012 14:52

Опера 12-я

$(window).scroll(function(){ 
      $("span").append('<b>текст</b><br/>'); 
    });

вот этот код вставляет "текст" 17 раз, вместо 1ого

JEEN 24.08.2012 15:02

http://demo.lovetcms.ru/
вот пример сделал. У вас нормально?

Deff 24.08.2012 15:04

Ну дык на сколько прокрутили - событий то несколько
Вы что думаете что скроллите непрерывно - ?

var TimeId;
$(window).scroll(function () {
      clearTimeout(TimeId);
      TimeId=setTimeout(function () {
       $("span").append('<b>текст</b><br/>');  
      },100)
});


Вы текст не .append а div.html('<b>текст</b><br/>') Всовывайте - иначе при каждой прокрутке/дерге добавки

JEEN 24.08.2012 15:12

Deff, мне нужно, чтобы текст добавлялся, а не обновлялся, поэтому html не катит.

за 2 косания колесика мыши у меня должно быть так (скриншот с гугл хрома)


а в опере у меня так

LittlePony 24.08.2012 15:18

В конце концов, всегда можно сделать так:
var text = ""
$(window).scroll(function(){
      text = "<b>текст</b><br/>"
})
$("span").append(text)

JEEN 24.08.2012 15:25

Цитата:

Сообщение от LittlePony (Сообщение 200266)
В конце концов, всегда можно сделать так:

не работает вообще


Часовой пояс GMT +3, время: 19:42.