Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как применить один и тот же скрипт на странице два раза, с разными значениями (https://javascript.ru/forum/dom-window/51218-kak-primenit-odin-i-tot-zhe-skript-na-stranice-dva-raza-s-raznymi-znacheniyami.html)

noid 28.10.2014 21:12

Как применить один и тот же скрипт на странице два раза, с разными значениями
 
Я весь код не буду писать, только нужные куски. И так, меню должно вести себя по разному, в зависимости от скроллинга, а именно:

$(function(){
    $(window).scroll(function() {
        var top = $(document).scrollTop();
        if (top < 174) $(".nav-wrap").css({top: '0', position: 'relative'}),
             $("#cssmenu > ul ul#cm-cur").addClass( "cm-cur" ); //выпадающее подменю делаю видимым

        else $(".nav-wrap").css({top: '0px', position: 'fixed'}),
             $("#cssmenu > ul ul#cm-cur").removeClass( "cm-cur" ); // при скроллинге вып.меню прячется, и видно только по ховеру на пункт главного меню
    });
});


И есть такой кусок:

$( "#cssmenu > ul li.active#drop" ).mouseout(function() {
    t = setTimeout(function(){ 
        $("li.cur-page#drop").css({background: '#EDF1F7'});
        }, 2000);
});


Событие mouseover одинаковое (его не пишу), но mouseout хочу сделать разный, примерно так:

$(function(){
    $(window).scroll(function() {
       var top = $(document).scrollTop();
       if (top < 174) $(".nav-wrap").css({top: '0', position: 'relative'}),
            $("#cssmenu > ul ul#cm-cur").addClass( "cm-cur" ), //выпадающее подменю делаю видимым
            $( "#cssmenu > ul li.active#drop" ).mouseout(function() { // Вот первый раз этот кусок вставил
                t = setTimeout(function(){ 
                    $("li.cur-page#drop").css({background: '#EDF1F7'});
                    }, 2000);
            });

       else $(".nav-wrap").css({top: '0px', position: 'fixed'}),
            $("#cssmenu > ul ul#cm-cur").removeClass( "cm-cur" ), // при скроллинге вып.меню прячется, и видно только по ховеру на пункт главного меню
            $( "#cssmenu > ul li.active#drop" ).mouseout(function() { // и снова этот кусок, но с другими значениями
                t = setTimeout(function(){ 
                    $("li.cur-page#drop").css({background: 'none'}),
                    $("#cssmenu > ul li ul#cm-cur").removeClass( "cm-cur" ); // Из-за этого условия весь сыр-бор - пытаюсь при mouseout сделать задержку, чтоб подменю пару секунд повисело и потом пропало
                    }, 2000);
            });
    });
});


Но нифига не работает. Помогите пожалуйста.

ksa 29.10.2014 08:28

Цитата:

Сообщение от noid
Как применить один и тот же скрипт на странице два раза, с разными значениями

Для этого скрипт оформляют функциями и делают параметры...

noid 29.10.2014 16:51

Цитата:

Сообщение от ksa (Сообщение 338155)
Для этого скрипт оформляют функциями и делают параметры...

Я попробовал в квадратные скобки if / else - не помогло
$(function(){
    $(window).scroll(function() {
       var top = $(document).scrollTop();
       if (top < 174) {
		    $(".nav-wrap").css({top: '0', position: 'relative'}),
            $("#cssmenu > ul ul#cm-cur").addClass( "cm-cur" ), //выпадающее подменю делаю видимым
            $( "#cssmenu > ul li.active#drop" ).mouseout(function() { // Вот первый раз этот кусок вставил
                t = setTimeout(function(){ 
                    $("li.cur-page#drop").css({background: '#EDF1F7'});
                    }, 2000);
            });
	   }

       else {
		    $(".nav-wrap").css({top: '0px', position: 'fixed'}),
            $("#cssmenu > ul ul#cm-cur").removeClass( "cm-cur" ), // при скроллинге вып.меню прячется, и видно только по ховеру на пункт главного меню
            $( "#cssmenu > ul li.active#drop" ).mouseout(function() { // и снова этот кусок, но с другими значениями
                t = setTimeout(function(){ 
                    $("li.cur-page#drop").css({background: 'none'}),
                    $("#cssmenu > ul li ul#cm-cur").removeClass( "cm-cur" ); // Из-за этого условия весь сыр-бор - пытаюсь при mouseout сделать задержку, чтоб подменю пару секунд повисело и потом пропало
                    }, 2000);
            });
	   }
    });
});
// JavaScript Document

На большее меня пока не хватит :-?

Царь Леонид 30.10.2014 10:29

Цитата:

Сообщение от noid (Сообщение 338259)
На большее меня пока не хватит :-?

Бида-Пичаль:-? Для начала создаем функцию, у нее указываем изменяемые переменные (у меня это name, у вас наверное css класс будет):
function ThisName(name){
        alert('Привет ' + name + '')
      }

Потом делаем нужный обработчик события и внутри него вызываем нашу функцию с нужными параметрами:
$('body').on('click', function(){//обработчик
      var Vasya = "Вася пупкин"//меняется динамически
                 ThisName(Vasya)
    })

Оставлю здесь http://learn.javascript.ru/play/Lmlftc

Georka 30.10.2014 10:49

каждой функции нужно определять переменные.

noid 31.10.2014 13:24

Всем спасибо, всё получилось :thanks:


Часовой пояс GMT +3, время: 00:31.