Некоторые проблемы с closeContent()
fucntion
, я не могу решить, как предотвратить его запуск каждый раз, когда я нажимаю .show-content
.
переход не должен бить дважды в основном.
Любая помощь приветствуется.
$('.show-content').on('click', function (e) {
e.preventDefault();
openContent();
});
$('#load-content').on('click','.prev',function (e){
e.preventDefault();
closeContent(this);
});
function openContent(){
$('#load-content').load('../views/product-page.html');
$('.container').addClass('loaded');
$("#load-content").on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function () {
$(this).addClass('animate');
var body = $("body,html");
body.animate({
scrollTop: 0
}, 800);
});
}
function closeContent(ele){
var Loaded = !$(ele).closest('.container').hasClass('loaded');
if (!Loaded) {
$('.animate').removeClass('animate');
$("#load-content").on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function () {
$('.loaded').removeClass('loaded');
$('#show-content').remove();
});
}
}
Вы не должны встраивать события... Во всяком случае, в качестве простого исправления используйте one()
:
$("#load-content").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function () {...});
Я не уверен, что вы хотите, но по внешнему виду вы останавливаете действие по умолчанию по e.preventDefault();
и поскольку он не решает вашу проблему, я предполагаю, что вы хотите, чтобы событие не разбудилось в дереве dom, которое не позволит родителям быть информированным о событии, и для этого вы можете использовать event.stopPropagation()
проверить документы здесь.Надеюсь это ответит на твой вопрос