Алгоритм JQuery для изменения смещения DIV, если все еще в поле зрения

надеюсь, вы сможете помочь.

Мой примерный код:

http://jsfiddle.net/RevengerTT/YZtyj/1/

Я пытаюсь разработать алгоритм, который будет захватывать offset(). Left и work out, если он переместил DIV "stretchflex" из состояния представления.

Я действительно изо всех сил пытаюсь разобраться в этом (начал кодирование JQuery сегодня после просмотра быстрого видео).

Я работал в трех переменных, которые, как мне кажется, должны давать мне нужные значения, но проблема, которую я испытываю, заключается в том, что var z = $("#stretchflex").width() не представляет собой "фактическую" ширину DIV, но видимая ширина его.

Может ли кто-нибудь увидеть, где я ошибаюсь?

$("#SFPanLeft").click(function () {
 var x = $("#SFHolder").width()
 var y = $("#stretchflex").offset().left
 var z = $("#stretchflex").width()
 $("#x").html("X : " + x.toString());
 $("#y").html("Y : " + y.toString());
 $("#z").html("Z : " + z.toString());
 if (x > (z + y)) { /* <----This is the bit which doesn't work */
 var left = $("#stretchflex").offset().left
 left -= 176
 $("#stretchflex").css({
 left: left + 'px'
 });
 };
 });

Большое спасибо за вашу помощь заранее - не могу подумать, сколько раз я нашел ответы, которые мне нужны, ища этот сайт :)

1 ответ

Думаю, я это разобрал.

На всякий случай кто-нибудь найдет это...

$("#SFPanLeft").click(function () {
 var x = $("#SFHolder").width();
 var y = $("#stretchflex").offset().left;
 var z = $("#stretchflex").get(0).scrollWidth; /* using scrollWidth fixes */
 $("#x").html("X : " + x.toString());
 $("#y").html("Y : " + y.toString());
 $("#z").html("Z : " + z.toString());
 if (x < (z + y)) { /* updated algorithm */
 var left = $("#stretchflex").offset().left
 left -= 176
 $("#stretchflex").css({
 left: left + 'px'
 });
 };
 });

licensed under cc by-sa 3.0 with attribution.