Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Делегирование (https://javascript.ru/forum/dom-window/51937-delegirovanie.html)

sloyi 26.11.2014 11:57

Делегирование
 
Пытаюсь создать событие при клике на созданном 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 работает корректно, но делегирование мне не поддаеться)
Помогите парни пожалуйста.:help:

sloyi 26.11.2014 11:58

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

$('.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;
						}
				);
	});

ruslan_mart 26.11.2014 12:19

$('#select_two').change(function() {
    alert(this.value);
});

sloyi 26.11.2014 12:26

вооооуууу спасибо большое все вышло как надо:dance:

sloyi 26.11.2014 13:22

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

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

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

kostyanet 26.11.2014 14:59

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

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

kostyanet 26.11.2014 15:05

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

Да, кстати, а что будет внешне с селектом, если ему программно засандалить selectedIndex=-1? Я как-то делал, уже забыл. Но тогда, вроде, не нужен пустой item. Любой выбор дает дает change, поскольку selectedIndex начинается с 0.

sloyi 26.11.2014 15:09

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

<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>


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

kostyanet 26.11.2014 15:11

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

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

Кстати, а кто знает как сделать чтобы код выполнялся в теме? Я все пункты тут проверил в навигации - нет ничего похожего.

kostyanet 26.11.2014 15:13

Цитата:

Сообщение от sloyi
мне нужно повесить событие клика на кнопку отправить

Ну вы не путайте член с морковкой. селект это селект (по-старому это называлось menu), а кнопка - какой у нее ченч?


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