Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Lion_astana
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321

Добавление функции внутрь другой функции

25.12.2013, 21:48. Показов 2073. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!

Делаю адаптивную верстку на сайте. Есть проверки в jQuery, например:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function catCols() {
             var bodyWidth = $('body').width();
                         
            if (bodyWidth < 601) {
                if(#my_div.hasClass('c_100') != true){
                    Тут код 1 ...             
                };
            };
            if (bodyWidth > 600 && bodyWidth < 1001) {
                if(#my_div.hasClass('c_50') != true){
                    Тут код 2 ...             
                };
            };
            if (bodyWidth > 1000 && bodyWidth < 1601) {
                if(#my_div.hasClass('c_33') != true){
                    Тут код 3 ... 
                    
                };
            };
            if (bodyWidth > 1600) {
                if(#my_div.hasClass('c_25') != true){
                    Тут код 4 ... 
                    
                };
            };
        };
В тех местах где написано "Тут код 1", "Тут код 2" и т.д. прописаны различные команды и функции. Есть вещи, которые должны работать на всех страницах сайта, например меню и т.п. НО! На некоторых страницах есть дополнительные функции, которые нужны только на этой конкретной странице, и мне кажется что нет смысла таскать все это в одном общем файле.

Как сделать так, чтобы на некоторых страницах описывать функции для этих страниц и затем добавлять их в общий скрипт с меню и теми вещами которые есть на всех страницах в места "Тут код 1", "Тут код 2" и т.д.?

Надеюсь вы поймете о чем я, если нет, напишите, попробую яснее объяснить.

Заранее благодарю всех за конструктивные предложения.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2013, 21:48
Ответы с готовыми решениями:

Дождать выполнения функции которая выполняется в другой функции JavaScript
Добрый день. Мне нужно выполнить ajax функцию в другой функции. сейчас я это реализовал как : function func1() { ...

Вызов функции из другой функции после нажатия на кнопку
Помогите, пожалуйста! Никак не могу понять почему не запускается функция d() Полный код: &lt;script language=&quot;javascript&quot;&gt;...

Вызов функции внутри другой функции
Доброго времени суток! Есть код, которые показывают расстановку шахматных фигур на доске, и если ход был сделан не правильно то фигура...

10
 Аватар для MoonDevilzzz
18 / 18 / 8
Регистрация: 15.03.2012
Сообщений: 166
26.12.2013, 08:21
как вариант добавлять id к body или класс.И по нему определяться.
0
 Аватар для Lion_astana
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321
26.12.2013, 09:43  [ТС]
MoonDevilzzz, а как id у body поможет мне вставить код в места, где написано "Тут код 1", "Тут код 2" и т.д.? Что-то я не пойму.
0
 Аватар для MoonDevilzzz
18 / 18 / 8
Регистрация: 15.03.2012
Сообщений: 166
26.12.2013, 09:46
JavaScript
1
if(#my_div.hasClass('c_100') != true){
Ну добавь похожее условие да и все.
0
 Аватар для Lion_astana
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321
26.12.2013, 15:48  [ТС]
MoonDevilzzz, нет проверка более сложная, хочется упростить.
Я немного упрощу пример:
JavaScript
1
2
3
4
5
6
catCols();
$(window).resize(catCols);
         
function catCols() {
$(".h_menu_block").css("display","block").eq(1).css("display","none"); //Например
}
Вот. Это на каждой странице сайта.
А например на странице "Контакты" мне нужно в функцию catCols добавить еще какой-нибудь код. КАК ЭТО СДЕЛАТЬ? Срабатывает несколько проверок, происходит подгрузка контента AJAX-ом, и не хочется еще кучу кода гондобить, просто иногда пару строчек дописать в уже существующую функцию...
0
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
26.12.2013, 16:56
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
someFunction = function(str) {
    console.log('Original function: ' + str);
}
    
someFunction = (function() {
    var cached_function = someFunction;
 
    return function(str) {
        console.log('New function before: ' + str);
 
        cached_function.apply(this, arguments); // use .apply() to call it
 
        console.log('New function after: ' + str);
    };
}());
 
someFunction('It works!');
0
 Аватар для Lion_astana
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321
26.12.2013, 19:30  [ТС]
vovandr, примерно понимаю приведенный Вами код, но не до конца. Поэтому не могу его прикрутить к моему частному случаю. Сможете немного разжевать?
0
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
27.12.2013, 00:58
Используем старую функцию в качестве замыкания и вызываем ее же с новыми аргументами которые поступают из уже вновь созданной функции)

Добавлено через 1 час 25 минут
При этом мы можем добавить любой код в новой функции. То есть фактически мы запоминаем (кешируем старую функцию), а затем создаем новую, дополняя ее новым кодом.
1
 Аватар для Lion_astana
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321
27.12.2013, 13:51  [ТС]
vovandr, стало понятнее. НО!

Проблема в том, что разные js файлы на странице не видят друг друга. Т.е. общий скрипт я подключаю в head страницы. Затем на странице, например, "Контакты" подключаю еще один скрипт, который хочу добавить. Но все это не работает, они не знают друг о друге, правильно?

Или я что-то не так проэксперементировал?
0
 Аватар для vovandr
636 / 523 / 195
Регистрация: 19.08.2013
Сообщений: 1,400
27.12.2013, 14:16
Если у вас скрипт стоит в head, а второй подгружается аяксом, то этот второй должен видеть тот что в head, если я правильно понимаю вашу структуру конечно.
0
 Аватар для Lion_astana
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321
27.12.2013, 16:09  [ТС]
vovandr, спасибо за советы. Сделал так:
подключаю в head скрипт, например 1.js:
JavaScript
1
2
3
var getParam = function(){
    $("#my_div").css("background-color","#000");
     };
Затем, в моем общем скрипте, который идет вслед за 1.js в нужном месте делаю проверку:
JavaScript
1
if (window.getParam !== undefined) {getParam()};
Работает.

Т.е. теперь придется в общем скрипте сделать таких проверок штук 5-6, и на нужных страницах подключать дополнительные скрипты. Я думаю по потреблению ресурсов это оптимальный вариант, хотя, могу и ошибаться..

В любом случае спасибо тебе, с наступающим!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2013, 16:09
Помогаю со студенческими работами здесь

Вызов функции из другой функции в объекте
Добрый день. У меня есть скрипт: var combiner = { getString: function(param){ return param; }, run: function(){ ...

Управление переменными функции из другой функции
чисто гипотетически есть функция: function first() { var b = ; } а ниже другая функция: function second() { //как...

Вызов функции, находящейся в другой функции
Добрый день! Есть такая функция: function func1(p1, p2) { function func2() {alert(1);} func2(); } Мне нужно...

И снова глобальная переменная в js. Как изменить значение глобальной переменной в одной функции и увидеть это значение в другой функции?
Это учебное задание. Помогите, пожалуйста, разобраться почему func1 видит какую-то новую переменную t вместо window.t? Пробовала...

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая должна бы вернуть значение, отталкиваясь от первой. Возможно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru