Я использовал следующий код, чтобы получить "нажмите снаружи", чтобы закрыть работу:Как указать .stopPropagation() в этом примере?
по щелчку дивы шоу:
$('div.topIconNew').click(
function(){
$(this).siblings('div.topTip').show();
$(this).siblings('div.topDrop').slideDown(240);
По щелчку за пределами DIVS шкурой:
$('div#wrapper').click(
function(event){
$('div.topIconNew, div.topTip, div.topDrop').hide();
}
);
$('div.topTip, div.topDrop').click(
function(event){
event.stopPropagation();
}
);
проблема с этим выше заключается в том, что topIconNew .stopPropagation делает так, что после того, как divs topTip и topDrop открыты, они не будут закрываться, если я снова нажму тот же самый topIconNew (т. е. переключится) или другой экземпляр topIconNew.
NEW EDIT ***
Хорошо, я думаю, через это и интересно, если решение может быть с тем, если заявления.
Так что я в конечном счете хочу следующий дополнительный код:
$('topIconNew').click(
function(){
$('div.topTip, div.topDrop').hide();
}
);
Однако, я хочу выше также сказать, чтобы скрыть topTip и topDrop при нажатии topIconNew только если topTip и topDrop открыты И скрыть только те элементы topTip и topDiv, которые в настоящее время открыты.
Как бы я сказал выше?
Итак, вы добавили .one() к вещам, так что это происходит только один раз для этих элементов? Кажется, я не могу заставить его работать. Я буду продолжать и, надеюсь, это сработает. Мне нужно будет лучше понять и .one(), и посмотреть, почему это означает, что я должен использовать .stopPropagation более экономно. Спасибо за ответ. – jstacks
Чтобы быть более конкретным, проблема заключается в том, что открыть начальный щелчок div, показывать и скрывать отмену друг друга все еще происходит, но только один раз. Итак, как только я это сделал, он отключит .hide() и покажет div. К сожалению, я не могу больше закрыться после щелчка снаружи ... поскольку он исчерпан, это время «.one()». – jstacks
.one() просто означает, что он будет выполняться только один раз. С этим фрагментом кода выше вам не нужны остальные. Только это откроет и закроет всплывающее окно. Причина, по которой вам придется использовать stopPropagation экономно, заключается в том, что событие click должно пройти весь путь до документа до того, как всплывающее окно закроется. Обратите внимание, что .one() подключается к «документу»; и поскольку события пузырятся, если только они не заблокированы stopPropagation или «return false», это запустит это событие ... но только один раз. – rkw