Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как правильно установить обработчик (https://javascript.ru/forum/jquery/29118-kak-pravilno-ustanovit-obrabotchik.html)

Telnet 15.06.2012 18:21

Как правильно установить обработчик
 
var cor = $("<div class='sky createCorrection' sky='"+id_sens+"' sortID='"+sortID+"' skyID='"+skyID+"'" +
	" style='position:absolute; width:"+w+"; "+left+" top:"+maxOffsetTop+"px;'>"+//
		 "<h3>Внесите изменения в выбраный текст</h3>"+
		 "<form method='post' id='edit_form' action='#'>"+
			"<textarea id='selected_sens"+sortID+"' name='selected_sens' cols='65' rows='10' ></textarea><br />"+
			"<input type='submit' class='button_save' value='Сохранить'>"+
			"<input type='button' class='button_cancel' value='Отменить'>"+
			"<input type='hidden' id='id_sens' name='id_sens' value='' />"+
			"<input type='hidden' name='option' value='com_wiki' />"+
			"<input type='hidden' name='format' value='raw' />"+
			"<input type='hidden' name='task' value='save_edit' />"+
		 "</form>"+			 
	 "</div>"
).appendTo($('#wrap_edit'));	
$('#wrap_edit').on('click', '.sky:not(form)', function(){
alert('.sky:not(form)');
});

Добрый день.
Есть такой вот блок class='sky он создается динамически, в нем есть форма, так вот мне нужно что событие нажатие кнопки мыши происходило только по щелчку на блоке с классом sky, но не срабатывало когда пользователь нажимает на форму которая содержится внутри этого блока.
Для установки его пытаюсь цеплять его через on на wrap_edit это блок содержит в себе все динамически добавляемые блоки sky, все бы хорошо но селектор .sky:not(form) как то не правильно отрабатывает и любой клик даже внутри формы приводит к срабатыванию обработчика.
И тоже самое внутри формы есть 2 кнопки
$('.button_cancel').live('click', function(e){			
});

Нужно на них тоже установить обработчики так что б они вызывали обработку события клик для содержащего их блока sky

Telnet 15.06.2012 21:04

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

see613 15.06.2012 23:15

$('.sky').on_или_live,_не_имеет_знач ения('click', function(e){
твои действия
});
$('.sky form').on('click', function(e){
e.stopPropagation();
return false; // чтоб если нажал на кнопку ничего не произошло
});

stopPropagation предотвращает всплытие события(оно происходит от потомков к родителям), тоесть форма почувствует событие, а .sky уже нет


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