У меня есть дочерняя кнопка close
внутри родителя, окно уведомлений.При щелчке по родительскому элементу окно уведомления расширяется, и в нем появляется описание уведомления, а внутри него становится видимой дочерняя кнопка.
При нажатии этой кнопки необходимо развернуть уведомление и скрыть и себя, и описание.
Поскольку у кнопки есть событие 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')
не ловит нужное уведомление.