$ (window) .load ИЛИ $ (window) .scroll в той же функции? - PullRequest
3 голосов
/ 27 января 2011

Я реализовал stickyfloat (http://plugins.jquery.com/files/stickyfloat_0.htm) на сайте. Он отлично работает с одной ошибкой. Функция срабатывает на $(window).scroll, а не на $(window).load. Я хочу, чтобы она тоже включалась, потому что я связываюсь с точками привязки на странице (http://tre -stage.wdogsystems.com: 8000 / faq / # делает отчет о продаже моей дебиторской задолженности отрицательный эффект на мой кредит) и я бы как боковое меню, которое появляется при загрузке страницы, а не только когда я запускаю прокрутку.

Если вы посмотрите на страницу выше, она работает так, как я хочу. Однако это только потому, что я повторил ту же функцию с $(window).load. Это кажется мне крайне неэффективным. Итак, есть ли способ связать их вместе?

Например:

$(window).scroll || $(window).load (function () ...

Ответы [ 4 ]

2 голосов
/ 27 января 2011

просто цепочка в привязке, например:

$(window).bind("scroll load", ...)

однако очень плохая идея прикрепить к событию прокрутки

очень хорошее объяснение причины и отличное решение: http://ejohn.org/blog/learning-from-twitter/

2 голосов
/ 27 января 2011

jQuery's .bind() help метод позволяет связывать несколько событий одновременно.

$(window).bind('scroll load', function() {
    // code here triggers for both, scroll & load events
});
1 голос
/ 27 января 2011

Как это:

$(document).bind('ready load scroll', function() { ... });
0 голосов
/ 02 марта 2015

Почему бы вам просто не вызвать событие прокрутки окна при загрузке? Вы также можете указать пространство имен для события прокрутки, чтобы изолировать его и иметь к нему лучший доступ позже ...

$(window)
   .on('scroll.myscroll', function () {
      // do something on scroll event
   })
   .trigger('scroll.myscroll'); // trigger scroll event on pageload

Но если вы на самом деле хотели запустить его при загрузке окна (при условии, что DOM полностью загружен, включая изображения и т. Д.), Тогда другие упомянутые примеры подойдут. Но используйте метод .on (), а не .bind ().

$(window).on('scroll.myscroll load.myload', function () {
   // do something on scroll and load events
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...