2015-06-09 2 views
3

Я хочу скрыть любой элемент, который нажал. Например, если щелкнуть <p></p>, он должен скрыть, или если щелкнуть <div></div>, он должен скрыться. Я попытался использовать:Как скрыть любой элемент DOM

$(document).ready(function(){ 
    $("*").click(function(){ 
     $(this).hide(); 
    }); 
}); 

Однако это скрывает все элементы, если щелкнуть один элемент.

Как я могу достичь того, что я описал?

ответ

6

Событие будет пузыриться до DOM, пока оно не достигнет document, а затем все будет скрыто. Вы можете остановить это бульканье с помощью stopPropagation на событие:

$("*").click(function(e) { 
    e.stopPropagation(); 
    $(this).hide(); 
}); 

отметить также, что это не очень хорошая идея, чтобы добавить обработчик событий каждый элемент в DOM, как там может быть тысячи. Вместо этого связать один обработчик для делегирования в document с помощью событий:

$(document).on('click', '*', function(e) { 
    e.stopPropagation(); 
    $(this).hide(); 
}); 

Example fiddle

+0

спасибо. это сработало :) – Roshni

3

В качестве альтернативного способа e.stopPropagation();, Вы также можете скрыть только целевой элемент:

$("*").click(function(e) { 
    $(e.target).hide(); 
}); 
+1

Это также хорошо с делегацией событий: '$ (document) .on ('click', function (e) { $ (e.target) .hide(); });' – Blazemonger

+0

Согласен , Я просто показывал альтернативный способ добиться того же результата. :) – taxicala

+0

Большое вам спасибо. Это тоже работает. Я узнаю о целевом элементе :) – Roshni

Смежные вопросы