У меня есть дочерняя кнопка close
внутри своего родителя, окно с уведомлением. Когда щелкнут родительский элемент, окно уведомлений расширяется, а описание уведомления и дочерняя кнопка становятся видимыми внутри него.e.stopPropagation() и .slideToggle() во время вторжения внутри событий click
Кнопка, при нажатии, должна развернуть уведомление и скрыть как себя, так и описание.
Поскольку кнопка имеет событие щелчка внутри родительского события click, оба вызывались. Я обратился к event.stopPropagation()
, чтобы остановить уведомление родительского уведомления после того, как я нажал. В то время как это остановило уведомление от расширения нажатием кнопки «Закрыть», оно представило новую проблему, которую я не понимаю.
В моем тесте у меня есть два уведомления, оба нерасширенные. Когда я нажимаю на уведомление, он расширяется и показывает кнопку описания и закрытия. Когда я нажимаю кнопку закрытия, уведомление не раскрывается, а кнопка и описание скрыты. Но, я обнаружил, что кнопка описания и закрытия появлялась для другого уведомления!
Код:
var $NotificationContainer = $("#NotificationContainer");
$NotificationContainer.append('<div class="Notification" title="'+title+'"></div>');
var $thisNotification = $NotificationContainer.children('.Notification[title='+title+']');
$thisNotification.append('<div class="NotificationTitle">'+title+'</div>');
$thisNotification.append('<div class="NotificationDescription">'+description+'</div>');
$(".NotificationDescription").hide();
// Button used to close an expanded notification
$thisNotification.append("<div class='NotificationCloseButton'></div>");
$('.NotificationCloseButton').hide();
// When the parent notification box is clicked
$thisNotification.click(function(event)
{
$thisNotification.animate({height:250}, 1000);
$thisNotification.find('.NotificationDescription').slideToggle('fast');
$thisNotification.find('.NotificationCloseButton').slideToggle('fast');
});
// When the child close button is clicked
$(".NotificationCloseButton").click(function(event)
{
event.stopPropagation();
$thisNotification.animate({height:50}, 1000);
$thisNotification.find('.NotificationDescription').slideToggle('fast');
$thisNotification.find('.NotificationCloseButton').slideToggle('fast');
});
Я не знаю, как $thisNotification.find('element')
не поймать правильное уведомление.
Вы можете разместить HTML структуру уведомления? – Blender
У меня на самом деле нет конкретного HTML-файла/кода для любой части этого, но я могу опубликовать CSS, если вам нравится? – Briz