Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   on и live в jQuery 1.10.2 (https://javascript.ru/forum/jquery/41728-i-live-v-jquery-1-10-2-a.html)

TheNiceBluff 26.09.2013 19:08

on и live в jQuery 1.10.2
 
Как в 1.10.2 обращаться к новосозданным элементам. Которые создавались при помощи:

$('#ids').append('<div class="sel_option" value="'+i+'">'+i+'</div>');

Как клик ловить?
Или как правильно создавать элементы к которым можно было бы обращаться...

danik.js 26.09.2013 19:43

var option = $('<div/>', {'class': 'sel_option', text: i});
option.click(function(){ .. });
$('#ids').append(option);

Хотя тут скорее делегирование подойдет:
$('#ids').on('click', '.sel_option', function() {..})
    .append(option);

TheNiceBluff 26.09.2013 19:48

Да нее... не то немного... с уже посоздавал элементы при помощи JQuery...

Теперь к ним надо обратится уже при новом клике по ним же...

danik.js 26.09.2013 19:53

$(родитель).children().click(function(){..})

или делегирование.

TheNiceBluff 26.09.2013 19:57

http://jsfiddle.net/n3K2U/

Вот смотрите...
Выбираем сначала год, потом месяц. И потом появляется количество дней. И собственно это количество дней создается через $('#ids').append('<div class="sel_option" value="'+i+'">'+i+'</div>');

Так вот как чтобы потом клик работал по ним.

Понимаю что можно в 1.8.2 перейти назад и там всё работает без проблем. Но надо это реализовать именно на 1.10

mi.rafaylik 27.09.2013 14:19

TheNiceBluff
1. Поправил Ваш jsFiddle. Добавил эти строки:
// выбираем день
$('.sel_day').on('click', '.sel_option', function(){
	$('.sel_day .selected-text').html($(this).html());
});

2. Не используйте в элементах div атрибут value. Для хранения скрытых данных лучше использовать атрибут data.
// устанавливаем значение data
$('div').attr('data', 'значение');
// получаем значение data
$('div').attr('data');

3. Обработчик .live() добавлен в версии 1.3, удалён в версии 1.9. Поэтому в 1.10.2 нужно использовать .on()


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