В вашем примере кода отсутствует важная часть:
$(document).click(function() {
$('.list-to-hide').hide();
});
$('.show-list-button').click(function(event) {
event.stopPropagation();
$('.list-to-hide').show();
});
Без event.stopPropagation()
он отобразит список, а затем скроет его, потому что .show-list-button
это внутри $(document)
, поэтому оба обработчика клика сработают.event.stopPropagation()
в основном говорит, что применяет это событие клика только к ЭТОМУ РЕБЕНКУ и ничего не сообщает родительским контейнерам, потому что я не хочу, чтобы они реагировали .
Подумайте об этом так - вы арендуете такси за 100 долларов.Водитель дает своей компании 80 долларов.event.stopPropagation()
все равно что сказать ему оставить все 100 долларов, потому что компании не нужно ничего знать о поездке.