Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   передача аргументов в функцию (https://javascript.ru/forum/jquery/52235-peredacha-argumentov-v-funkciyu.html)

yintar 09.12.2014 16:59

передача аргументов в функцию
 
Всем привет
не понимаю что за конченный язык этот javascript и на ем же основанная jquery.:-/
есть обычный код который будет работать во всех языках программирования,только не в javascript (я имею в виду не конкретный код а принцип).
<script type="text/javascript">
    $(function() {
        var category_id;
        $('.category').click(function() {
            category_id = $(this).attr('id');
            alert(category_id);
        });
        if (category_id)
            getCategoriesByParent(category_id);
    });

В этом коде есть переменная category_id которая после события клика на div с классом category инициализируется значением аттрибута id.Далее переменная category_id должна передаваться в функцию getCategoriesByParent(category_id),но она туда почему-то не передается,хотя внутри события клик она видна и alert(category_id) ее выводит.Но ведь она объявлена выше кода $('.category').click(function() { следовательно значение в ней должно сохраняться и передаваться в функцию getCategoriesByParent(category_id),но не передается.
Вопрос:почему????????????????????????? ?????????????????????????????????????????????????? ???????????????????????????????????????

рони 09.12.2014 17:05

yintar,
то есть перенести 7 строку в 10 вам трудно?

yintar 09.12.2014 17:09

не трудно я так и делал.Просто мне нужно чтобы getCategoriesByParent(category_id) вызывалась один раз после того как будет известно значение category_id;
я не понимаю почему так не работает

Aetae 09.12.2014 17:34

Потому что клик - это событие, которое возникнет когда-нибудь, или не возникнет вовсе, а if ваш исполняется здесь и сейчас.
Если всё ещё не понятно - начните с самых основ, и без всякого jquery.

P.S. Чтобы "вызывалось один раз" - надо просто снять обработчик клика после исполнения.

yintar 09.12.2014 17:48

Aetae вы не понимаете о чем я говорю,и при чем здесь основы.Событие клик( как вы говорите когда-нибудь) произошло сейчас и значит переменная category_id должна инициализироваться каким-то значением.те. после клика category_id должна сохранить значение и это значение передаться в функцию getCategoriesByParent(category_id);
P.S if здесь не причем не работает как с ним так и без него тут скорее вопрос видимости переменных почитайте http://habrahabr.ru/post/78991/

рони 09.12.2014 18:04

:write: переменные сами должны реагировать на своё изменение и знать в каких функциях использованны и запускать их в момент своего изменения. ... о @!#

Aetae 09.12.2014 19:29

yintar,
Не знаю о чём ты там думаешь, но jquery.click(function(){ ... }) - это не клик "сейчас", а усложнённый внутри у упрощённый снаружи аналог навешивания обработчика на событие клика по элементу: elemen.onclick = function(){ ... }
Потому и говорю:
Цитата:

и без всякого jquery.
А хабр по теме js тебе рано читать, у тебя вообще нет представления о сём языке.


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