JQuery, как предотвратить переход события в конце

0

Некоторые проблемы с 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();
        });
    }           
}
Теги:
load

2 ответа

0
Лучший ответ

Вы не должны встраивать события... Во всяком случае, в качестве простого исправления используйте one():

$("#load-content").one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function () {...});
  • 0
    УДИВИТЕЛЬНОЕ спасибо :-)
0

Я не уверен, что вы хотите, но по внешнему виду вы останавливаете действие по умолчанию по e.preventDefault(); и поскольку он не решает вашу проблему, я предполагаю, что вы хотите, чтобы событие не разбудилось в дереве dom, которое не позволит родителям быть информированным о событии, и для этого вы можете использовать event.stopPropagation() проверить документы здесь.Надеюсь это ответит на твой вопрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню