Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не совсем понимаю использование функций в событиях 
V
    Опции темы
Illdisposed
Дата 10.6.2012, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.3.2012

Репутация: нет
Всего: нет



Здравствуйте!
Подскажите, пожалуйста, почему вариант:
Код

        $('#firstCategory')
            .change(alert('111'));

не работает, а так все нормально:
Код

        $('#secondCategory')
            .change(function(){alert('222')});

Т.е. почему нужно писать function(){alert('222')}?
Вот полный код:
Код

<!DOCTYPE HTML>

<html>

<head>
  <title></title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript">
    $(function(){
        $('#firstCategory')
            .change(alert('111'));
        $('#secondCategory')
            .change(function(){alert('222')});
        $('#thirdCategory')
            .change(function(){alert('333')});
    });
  </script>
</head>

<body>
    <form action="/FancyLucy/newSeller/item" method="post" >
        <section>
            <select name="firstCategory" id="firstCategory" >
                <option value="">-Choose-</option>
                <option value="1" >AAA</option>
            </select>
            <select name="secondCategory" id="secondCategory" >
                <option value="">-Choose-</option>
                <option value="1" >BBB</option>
            </select>
            <select name="thirdCategory" id="thirdCategory" >
                <option value="">-Choose-</option>
                <option value="1" >CCC</option>
            </select>
        </section>
        <input type="submit" name="addItem" value="Item" id="addItem" />
    </form>
</body>
</html>

PM MAIL   Вверх
Amphiluke
Дата 10.6.2012, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 17
Всего: 112



Потому что метод .change() ожидает получить в качестве аргумента ссылку на callback-функцию. А метод alert, который вы вызываете, возвращает всегда undefined, а не ссылку на функцию.
PM   Вверх
Illdisposed
Дата 10.6.2012, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.3.2012

Репутация: нет
Всего: нет



Amphiluke, 
Спасибо! Но ведь так тоже не работает:
Код

  <script type="text/javascript">
    $(function(){
        $('#firstCategory')
            .change(x1());
        $('#secondCategory')
            .change(function(){alert('222')});
        $('#thirdCategory')
            .change(function(){alert('333')});
    });
    function x1() {
        alert('111')
    }
  </script>

PM MAIL   Вверх
Amphiluke
Дата 10.6.2012, 21:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 17
Всего: 112



Цитата(Illdisposed @  11.6.2012,  01:25 Найти цитируемый пост)
Но ведь так тоже не работает:

Вот если ф-ция x1 будет возвращать ссылку на функцию, то будет работать. А если она возвращает что-то другое, то и понятно, что не будет.
Вы поймите, что в методы типа .change() нужно передавать ссылку на функцию, а вы сразу ее вызываете, указывая скобки после имени функции.

Добавлено через 59 секунд
То есть будет работать так:
Код

$('#firstCategory')
            .change(x1);

PM   Вверх
Illdisposed
Дата 10.6.2012, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 10.3.2012

Репутация: нет
Всего: нет



Amphiluke, вот это я облажался. Мне стыдно, очень стыдно.... Спасибо Amphiluke! Прошу прощения за такой вопрос.
PM MAIL   Вверх
Amphiluke
Дата 10.6.2012, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 17
Всего: 112



Я разве где-то упрекнул за вопрос? smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.