Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2014, 11:57
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

Делегирование
Пытаюсь создать событие при клике на созданном option с помощью вывода ajax.

Пример
есть два select

<select id="select_one">
<option selected="selected">Выберите раздел</option>
<option id="82" class="option_id_one">Мягкая мебель</option>
<option id="83" class="option_id_one">Гостиная</option>
<option id="96" class="option_id_one">Кухни</option>
<option id="104" class="option_id_one">Спальня</option>
</select>

<select id='select_two'>
</select>


во второй селект я вывожу option из базы допустим после того как мы выбрали раздел второй селект получился :

<select id="select_two">
<option id="156" class="option_id_two">Табуреты</option>
<option id="97" class="option_id_two">Кухонные гарнитуры</option>
<option id="98" class="option_id_two">Стулья</option>
<option id="99" class="option_id_two">Столы</option>
<option id="101" class="option_id_two">Кухонные уголки</option>
<option id="179" class="option_id_two">Шкафы</option>
</select>

далее мне надо повесить событие клика по option с классом option_id_two

пытаюсь сделать следущим образом:

$('#select_two').on('click', '.option_id_two', function() {
	alert('Привет');
});


но он мне alert не выводит

(сам вывод option во второй select работает корректно, но делегирование мне не поддаеться)
Помогите парни пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2014, 11:58
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

если надо то вот вывод во второй селект

$('.option_id_one').click(function (){
		id = this.id;
		$.post("/netcat/modules/default/tegs-vivod-podrazd.php",
						{
						id:id,
						},
					function(data)
						{
						document.getElementById('select_two').innerHTML = data;
						}
				);
	});
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2014, 12:19
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

$('#select_two').change(function() {
    alert(this.value);
});
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2014, 12:26
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

вооооуууу спасибо большое все вышло как надо
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2014, 13:22
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

блин нет все равно не правильно. мне нужно событие именно на нажатие

элемента с классом option_id_two

я так понял что это возможно только через делегирование но у меня не получаеться
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2014, 14:59
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Щелчок по селекту не имеет смысла.

Чтобы гарантировано был change, нужен item по умолчанию который не имеет значения. Например "----", или там "Выберите табуретку".

Последний раз редактировалось kostyanet, 26.11.2014 в 15:02.
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2014, 15:05
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну да, как в первом селекте у вас сделано - так и продолжайте добавлять дефолтное значение на которое нельзя получить данные, ну или придут те же самые.

Да, кстати, а что будет внешне с селектом, если ему программно засандалить selectedIndex=-1? Я как-то делал, уже забыл. Но тогда, вроде, не нужен пустой item. Любой выбор дает дает change, поскольку selectedIndex начинается с 0.
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2014, 15:09
Аспирант
Отправить личное сообщение для sloyi Посмотреть профиль Найти все сообщения от sloyi
 
Регистрация: 16.10.2014
Сообщений: 72

хоршо а если у меня появилось несколько дивов например

<div class='otpravka'>
<span>1 значение</span>
<div class='otpracit'>Отправить</div>
</div>

<div class='otpravka'>
<span>2 значение</span>
<div class='otpracit'>Отправить</div>
</div>

<div class='otpravka'>
<span>3 значение</span>
<div class='otpracit'>Отправить</div>
</div>


мне нужно повесить событие клика на кнопку отправить
Ответить с цитированием
  #9 (permalink)  
Старый 26.11.2014, 15:11
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Все правильно, вот что будет http://learn.javascript.ru/play/uTrs1b

селект будет kinda empty, но зато ченч сработает гарантировано.

Кстати, а кто знает как сделать чтобы код выполнялся в теме? Я все пункты тут проверил в навигации - нет ничего похожего.
Ответить с цитированием
  #10 (permalink)  
Старый 26.11.2014, 15:13
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от sloyi
мне нужно повесить событие клика на кнопку отправить
Ну вы не путайте член с морковкой. селект это селект (по-старому это называлось menu), а кнопка - какой у нее ченч?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильное всплытие события (делегирование) brokenwind Events/DOM/Window 3 15.04.2014 03:35
Делегирование события ruslan_mart Общие вопросы Javascript 29 11.01.2014 16:05
делегирование Moloch Events/DOM/Window 3 12.11.2013 15:20
Динамическое делегирование событий в backbone ssnikolay Библиотеки/Тулкиты/Фреймворки 4 13.11.2012 10:47