Объясните по jquery

voodoo911
На сайте с 11.03.2008
Offline
157
830

Объясните ламмеру, что происходит в строке jquery.

var top = (

(($(window).scrollTop() - boxheight) <= startin)? startin :

(($(window).scrollTop() < ($('div#content div.inner-content').height() - boxheight))?

$(window).scrollTop() - boxheight + 30 :

($('div#content div.inner-content').height() - boxheight))

);

Спасибо :)

ДП
На сайте с 23.11.2009
Offline
203
#1

Если интересует именно что в jquery - то scrollTop() - это на сколько скролл окна откручен до самого верхнего элемента (в данном случае - window), .height() - это высота элемента.

Если в общем яваскрипт - то это парочка вложенных тернарных операторов - сокращенная запись - аналогична if'у.


if((($(window).scrollTop() - boxheight) <= startin)){
top = startin;
}else{
if((($(window).scrollTop() < ($('div#content div.inner-content').height() - boxheight))){
top = $(window).scrollTop() - boxheight + 30
}else{
top = ($('div#content div.inner-content').height() - boxheight))
}
}

по-моему как-то так это можно переписать.

voodoo911
На сайте с 11.03.2008
Offline
157
#2

А какой тут элемент меняется во время прокрутки? Просто во врмея скрола значение top меняется, а какое значение динамическое - выловить не могу. ставил маячки на $(window).scrollTop() и $('div#content div.inner-content').height() - они стабильное число выдают

Весь кусок кода такой

jQuery(document).ready(function($) {

var boxheight = 100;

//

$('#selectbox').sSelect().change(function(){window.location.href = $("#selectbox").getSetSSValue();});

// береи высоту аккардеона

var startin = $('#accordion').height();

$('#sidebar .download-box').attr("top",startin+"px"); // создаем аттриут с высотой или отступом сверху

$('#sidebar .download-box').attr("mid",$('div#content div.inner-content').height());

// scroltop - положение верт прокрутчика,

$(window).scroll(function() {

var top = (

(($(window).scrollTop() - boxheight) <= startin)? startin :

(($(window).scrollTop() < ($('div#content div.inner-content').height() - boxheight))?

$(window).scrollTop() - boxheight + 30 :

($('div#content div.inner-content').height() - boxheight))

);

$('#sidebar .download-box').animate({top: top+"px" },{queue: false, duration: 500 });

});

PR
На сайте с 30.12.2007
Offline
140
#3
voodoo911:
$(window).scrollTop()

Быть не может статичным.

$(document).ready(function() {

$(window).scroll(function() {
alert($(window).scrollTop());
});
});
voodoo911
На сайте с 11.03.2008
Offline
157
#4

Разобрался. всем спасибо

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий