Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Ламерские вопросы Объединение двух js скриптов в один

Объединение двух js скриптов в один


     27.10.2013    Ламерские вопросы    1790

вопрос
Есть два скрипта:
/* #1 */
$(document).ready(function(){var a=$("#header-1").offset().top;$(window).scroll(function(){if($(window).scrollTop()>a){$("#header-1").css({position:"fixed",top:"-2px"})}else{$("#header-1").css({position:"static"})}})});
/* #2 */
$(document).ready(function(){var b=$("#header-2").offset().top;$(window).scroll(function(){if($(window).scrollTop()>b){$("#header-2").css({position:"fixed",top:"-2px"})}else{$("#header-2").css({position:"static"})}})});
Отличаются они только #header-1 и #header-2. Можно как то склеить все в один скрипт?

Ответил: TheImDim



$(document).ready(
function () {
    var h1 = $("#header-1");
    var h1 = $("#header-2");
    var a = h1.offset().top;
    var b = h2.offset().top;
    $(window).scroll(function () {
        var w = $(window).scrollTop();
        if ( w > a ) h1.css({position:"fixed",top:"-2px"});
        else h1.css({position: "static"});
        if ( w > b ) h2.css({position:"fixed",top:"-2px"});
        else h2.css({position: "static"});
    });
});

Комментарии пользователей (9)

TheImDim
18

327 | 291

TheImDim - 27 октября 2013 11:16 - Юзер

Опечатка:


var h1 = $("#header-1");
var h2 = $("#header-2");


P.S. давно пора уже узнать про jspretty

Sander
1125

1637 | 1202

Sander - 27 октября 2013 21:50 - Эксперт

Чего-то я сегодня добрый...
Лови универсальный скрипт на любое количество хидеров.

<script>
$.fn.posfixstat = function() {
    var $this = $(this);
    var a = $this.offset().top;
    $(window).scroll(function(){
        var w = $(window).scrollTop();
        if ( w > a ) $this.css({position:"fixed",top:"-2px"});
        else $this.css({position: "static"});
    });
};
$(function(){
    $("#header-1").posfixstat();
    $("#header-2").posfixstat();
})
</script>

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 27 октября 2013 22:06 - Админ

$("#header-1, #header-2").posfixstat();
не?

Каков вопрос - таков и ответ. Просто помните об этом.

Sander
1125

1637 | 1202

Sander - 28 октября 2013 00:50 - Эксперт

Да :)

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

Gopr
10

494 | 164

Gopr - 28 октября 2013 00:02 - Юзер

Спасибо, но от TheImDim мне вариант больше подходит, есть возможность регулирования
{position:"fixed",top:"-2px"}
для каждого #header-число

Sander
1125

1637 | 1202

Sander - 28 октября 2013 00:51 - Эксперт

Вуаля.
<script>
$.fn.posfixstat = function(o) {
    var $this = $(this);
    var a = $this.offset().top;
    $(window).scroll(function(){
        var w = $(window).scrollTop();
        if ( w > a ) $this.css({position:"fixed",top:o+"px"});
        else $this.css({position: "static"});
    });
};
$(function(){
    $("#header-1").posfixstat(-2);
    $("#header-2").posfixstat(-5);
})
</script>

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

Gopr
10

494 | 164

Gopr - 28 октября 2013 01:10 - Юзер

Ок, поставил ваш вариант, все же старались хоть ответ уже был дан + у вас на 58 символов код легче xD

ПафНутиЙ
1064

3393 | 2433

ПафНутиЙ - 28 октября 2013 01:59 - Админ

Оптимизация не знает границ )))
$.fn.posfixstat = function() {
    var $this = $(this);
    var a = $this.offset().top;
    var o = ($this.data('top')) ? $this.data('top') : 0;
    $(window).scroll(function(){
        var w = $(window).scrollTop();
        if ( w > a ) $this.css({position:"fixed",top:o+"px"});
        else $this.css({position: "static"});
    });
};
$(function(){
    $("#header-1, #header-1").posfixstat();
});

HTML:

<div id="header-1" data-top="-2"></div>
<div id="header-2" data-top="-5"></div>

А для чего собственно этот скрипт нужен?

Каков вопрос - таков и ответ. Просто помните об этом.

Gopr
10

494 | 164

Gopr - 28 октября 2013 02:05 - Юзер

А для чего собственно этот скрипт нужен?
Это Липкий хедер на jQuery. Просто у меня два таких блока.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы