Выполнить функцию Jquery в событиях окна: загрузить, изменить размер и прокрутить?
Как запустить функцию jquery в событиях окна: загрузить, изменить размер и прокрутить?
Вот мой код
Я пытаюсь определить, является ли div видимым, а затем, если он запускает некоторый код ajax...
<script>
function topInViewport(element) {
return $(element).offset().top >= $(window).scrollTop() && $(element).offset().top <= $(window).scrollTop() + $(window).height();
}
</script>
<script>
topInViewport($("#mydivname"))
{
// ajax code goes here
}
Ответы
Ответ 1
Вы можете использовать следующее. Все они обертывают объект window
в объект jQuery.
Загрузить:
$(window).load(function () {
topInViewport($("#mydivname"))
});
Изменить размер:
$(window).resize(function () {
topInViewport($("#mydivname"))
});
Scroll
$(window).scroll(function () {
topInViewport($("#mydivname"))
});
Или привязайте их ко всем, используя on
:
$(window).on("load resize scroll",function(e){
topInViewport($("#mydivname"))
});
Ответ 2
Вы можете связать слушателей с одной общей функцией -
$(window).bind("load resize scroll",function(e){
// do stuff
});
Или другим способом -
$(window).bind({
load:function(){
},
resize:function(){
},
scroll:function(){
}
});
В качестве альтернативы вместо .bind()
вы можете использовать .on()
, поскольку привязка напрямую сопоставляется с on()
.
И, возможно, .bind()
не будет в будущих версиях jQuery.
$(window).on({
load:function(){
},
resize:function(){
},
scroll:function(){
}
});
Ответ 3
просто вызовите свою функцию внутри событий.
нагрузки:
$(document).ready(function(){ // or $(window).load(function(){
topInViewport($(mydivname));
});
изменить размер:
$(window).resize(function () {
topInViewport($(mydivname));
});
пролистайте:
$(window).scroll(function () {
topInViewport($(mydivname));
});
или привязать все события к одной функции
$(window).on("load scroll resize",function(e){