Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.10.2017, 21:32
Интересующийся
Отправить личное сообщение для carder Посмотреть профиль Найти все сообщения от carder
 
Регистрация: 10.12.2013
Сообщений: 15

обработка select по умолчанию
есть select, в нем один пункт выбран по умолчанию.
Необходимо выполнить функцию как при первичной загрузке select так и при его изменении.
вижу себе это так:
HTML:
<div class="del_select" id="country_select">
            <label for="country">
                <select class="selectBlock" id="country">
				<option value="2">Армения</option>
				<option value="2">Беларусь</option>
				<option value="2">Казахстан</option>
				<option value="2">Киргизия</option>
				<option selected value="1">Россия</option>
                </select></label>
        </div>

JS:
$('#country').change();
			$('#country').change(function () {
				alert('ДА!');
			});

не работает. Но, если изменить порядок:
$('#country').change(function () {
				alert('ДА!');
			});
                        $('#country').change();

то работает! Чем можно объяснить?

P.s. запилил фидл https://jsfiddle.net/8s9now1t/ он вообще не обрабатывает $('#country').change()
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2017, 21:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$('#country').change(function () {
                alert('ДА!');
}).trigger('change');
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2017, 21:52
Интересующийся
Отправить личное сообщение для carder Посмотреть профиль Найти все сообщения от carder
 
Регистрация: 10.12.2013
Сообщений: 15

а почему это правильнее чем моя запись и как быть если необходимо выбрать из другого места?

и тут по прежнему почему-то не работает https://jsfiddle.net/8s9now1t/1/
Ответить с цитированием
  #4 (permalink)  
Старый 16.10.2017, 22:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от carder
и тут по прежнему почему-то не работает
jQuery нет
нажмите там кнопку JavaScript => Frameworks & Extensions => jQuery
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2017, 23:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от carder
а почему это правильнее чем моя запись
Это $('#country').change установка обработчика списку, которую можно произвести только по событию загрузки документа, то есть единожды. А это $('#country').change(...).trigger('change') запуск установленного обработчика, который запустится после загрузки страницы.

Сообщение от carder
как быть если необходимо выбрать из другого места?

Что значит выбрать с другого места? Методом jQ .trigger(event) можно сколь угодно запускать ранее установленный обработчик.
Ответить с цитированием
  #6 (permalink)  
Старый 17.10.2017, 00:09
Интересующийся
Отправить личное сообщение для carder Посмотреть профиль Найти все сообщения от carder
 
Регистрация: 10.12.2013
Сообщений: 15

не совсем так. По документации (http://api.jquery.com/change/):
вызов .change() - работает как триггер
вызов .change( обработчик ) - устанавливает обработчик.

единственный вопрос, который остался - вызвать обработчик можно только после того как он задан? Т.е.
$('#country').trigger('change'); //тут не должен работать
$('#country').change(function () {
				alert('ДА!');
			});
$('#country').trigger('change'); // а тут уже сработает


т.е. это ни как обращение к js функции?
Ответить с цитированием
  #7 (permalink)  
Старый 17.10.2017, 00:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от carder
вызвать обработчик можно только после того как он задан?
Да, а вам что-то иное разве нужно?
Ответить с цитированием
  #8 (permalink)  
Старый 17.10.2017, 08:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А так, сначала:

$('#country').event(...);

а затем

$('#country').trigger(event);

это совсем плохо. Методы JQ возвращают объект полученный по селектору, что позволяет описать множество методов к объекту цепочкой. А то что вы делаете - это найти в DOM объект, выполнить, затем его же опять найти в DOM и выполнить еще что-то.

JQ позволяет это описать так:

$(selector).method(...).method(...).method(...)...

Можно одновременно и кешировать объект в дальнейшем используя его внутри методов.

Сообщение от carder
т.е. это ни как обращение к js функции?
Это вызов события и соответственно запуск ранее установленного на него обработчика. Выполнить обработчик события не вызывая самого события, это метод .triggerHandler().
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка выбора select systemiv Общие вопросы Javascript 2 20.11.2012 01:44
Как выбрать параметр в select по умолчанию? hurtmind Серверные языки и технологии 0 23.09.2012 23:21
Пользовательский скрипт для выбора option в select по умолчанию justalittleperson Элементы интерфейса 1 04.10.2010 06:13
select по умолчанию Ultimatum Events/DOM/Window 0 31.07.2010 18:40
Обработка Select Oleg_Antonov Элементы интерфейса 17 16.05.2009 03:23