Всем доброго дня.
Делаю простой скрипт на 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.
Есть варианты решения, через создания обертки или использования классов, но думаю решение намного проще.