Показать сообщение отдельно
  #1 (permalink)  
Старый 02.09.2014, 15:29
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Вопрос по идентичности event.target и DOM
Всем доброго дня.
Делаю простой скрипт на JQuery. На экране выводится какое-то сообщение или показывается определенный блок и сразу же к нему применяем метод .hide_by_click(). При клике на область отличную от появившегося блока, он исчезает.
Вот пример кода
function show_next_fadeToggle(){
	fly_block=$(this).next();
        fly_block.stop().fadeIn(500,function(){
				$(this).hide_by_click();
			});

jQuery.fn.hide_by_click=function(){
	$('body').on('click',{elem:$(this)},function(e){
	
			//alert(e.target);
			//alert(e.data.elem);
			
			//alert(fg.find(e.data.elem).length);
			//alert(e.target.length);
			if (e.target.length==e.data.elem.length){
				alert('Клик на элементе');
			}
			//alert(e.target.find(e.data.elem).length);
			if (e.data.elem.find(e.target).length!=0){
				alert('Клик на элементе');
			}else {//elem.remove();

}
		})
	}

В строке e.data.elem.find(e.target).length!=0 идет провека того, что элемент e.data.elem содержится в e.target(в то, по чему мы кликнули)
Работает нормально, но вот когда клик производится по самому элементу, т.е. e.target равен e.data.elem начинаются проблемы.
т.к. первый это objectHTMLDIVElement второй - object Object.
Как сделать провеку что клик был именно по элементу e.data.elem.
Есть варианты решения, через создания обертки или использования классов, но думаю решение намного проще.
Ответить с цитированием