Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2015, 14:25
Новичок на форуме
Отправить личное сообщение для Kuzma Посмотреть профиль Найти все сообщения от Kuzma
 
Регистрация: 05.05.2015
Сообщений: 4

jQuery, не работает часть кода в joomla 3
Добрый.
Есть скрипт «прилипающего» блока, но часть кода, а именно: прекращение «прилипания» - не работает в Дж. 3

<script type="text/javascript">
(function( $ ){

$.fn.containedStickyScroll = function( options ) {

var defaults = {
unstick : true,
easing: 'linear',
duration: 500,
queue: false,
closeChar: 'x',
closeTop: 15,
closeRight: 25
}

var options = $.extend(defaults, options);
var $getObject = $(this).selector;

if(options.unstick == true){
this.css('position','relative');
this.append('<a class="scrollFixIt">' + options.closeChar + '</a>');
jQuery($getObject + ' .scrollFixIt').css('position','absolute');
jQuery($getObject + ' .scrollFixIt').css('top',options.closeTop + 'px');
jQuery($getObject + ' .scrollFixIt').css('right',options.closeRight + 'px');
jQuery($getObject + ' .scrollFixIt').css('cursor','pointer','font-size','2em');
jQuery($getObject + ' .scrollFixIt').css('font-size','2em');
jQuery($getObject + ' .scrollFixIt').click(function() {
jQuery($getObject).animate({ top: "0px" },
{ queue: options.queue, easing: options.easing, duration: options.duration });
jQuery(window).unbind();
jQuery('.scrollFixIt').remove();
});
}
jQuery(window).scroll(function() {
var topPadding = 75;
if(jQuery(window).scrollTop() > (jQuery($getObject).parent().offset().top) &&
(jQuery($getObject).parent().height() + jQuery($getObject).parent().position().top - 30) > (jQuery(window).scrollTop() + jQuery($getObject).height())){
jQuery($getObject).css({ top: (jQuery(window).scrollTop() - jQuery($getObject).parent().offset().top) + topPadding },
{ queue: options.queue, easing: options.easing, duration: options.duration });
}
else if(jQuery(window).scrollTop() < (jQuery($getObject).parent().offset().top)){
jQuery($getObject).css({ top: "0px" },
{ queue: options.queue, easing: options.easing, duration: options.duration });
}
});

};
})( jQuery );
</script>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#fixed').containedStickyScroll();
});
</script>


Не работает весь скрипт из-за этой части кода:

&&
(jQuery($getObject).parent().height() + jQuery($getObject).parent().position().top - 30) > (jQuery(window).scrollTop() + jQuery($getObject).height())

Без этой части кода - работает, но нет прекращения «прилипания» при достижения «footer» - уходит за него ...

Заранее спасибо за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2015, 09:27
Новичок на форуме
Отправить личное сообщение для Kuzma Посмотреть профиль Найти все сообщения от Kuzma
 
Регистрация: 05.05.2015
Сообщений: 4

Да, спасибо всем за помощь!

И как один товарисч здесь написал: если пользователи будут задавать вопросы и сами на них отвечать, - то это будет лучший вариант ...

Так нахрена тогда нужны данные разделы на подобных сайтах спрашивается?!
Ведь мы обращаемся за помощью по незнанию, и как написано во многих местах: зачем изучать тонну документации, чтоб поправить одну строчку, если затем это никогда не пригодится?!

И собственно решение:

«Не работает весь скрипт из-за этой части кода:

&&
(jQuery($getObject).parent().height() + jQuery($getObject).parent().position().top - 30) > (jQuery(window).scrollTop() + jQuery($getObject).height())

Без этой части кода - работает, но нет прекращения «прилипания» при достижения «footer» - уходит за него ...»

Все в коде в порядке, просто этот код предназначен для простейшего сайта (шаблона).
А сейчас шаблоны с большой вложенность, если можно так выразиться, т.е.

<div id="...">
<div id="...">
<div id="...">
.....
</div>
</div>
</div>

поэтому, вот эти две переменные: (jQuery($getObject).parent().height() + jQuery($getObject).parent().position().top - 30)> ... - не могут найти нужного родителя (.parent) ...

Т.е. надо ручками прописать родителя (($getObject).parent()) - контейнер, в котором расположен наш объект (модуль) и контент (то, относительно чего слева или справа будет двигаться наш объект).

Если уж совсем просто: то надо прописать общий контейнер, в котором находится все, учитывая наш объект, - до футера ...

Поварьируйте с контейнером и Вы его найдете ...

У меня это выглядит так: (jQuery("#columns_wrap").height() + jQuery("#columns_wrap").position().top - 30)> ...

Вот, как бы так ...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрыть из исходного кода часть javascript кода. javasc Javascript под браузер 10 12.03.2014 09:32
jQuery Click() не работает на объекте, созданном Ajax vovabigov jQuery 13 09.09.2012 14:25
не работает jquery скрипт, если её подклучаю dadli Общие вопросы Javascript 7 15.05.2012 11:11
jquery не работает в цикле alexus jQuery 3 03.09.2011 14:49
jQuery не работает ни в IE8 ни в Firefox Jon Events/DOM/Window 7 09.01.2010 23:39