Jquery。然后不工作

时间:2015-10-29 11:41:39

标签: javascript jquery

我有一个手风琴,并且想要在完成从一个状态转换到另一个状态时触发某些东西。以下代码引发了错误Uncaught TypeError,我现在只是尝试console.log

$(document).ready(function () {
    $('.accordion-tabs').each(function() {
        $(this).children('li').first().children('a').addClass('is-active').next().addClass('is-open').show();
    });
    $('.accordion-tabs').on('click', 'li > a.tab-link', function(event) {  
        if (!$(this).hasClass('is-active')) {
            event.preventDefault();
            var accordionTabs = $(this).closest('.accordion-tabs');
            accordionTabs.find('.is-open').removeClass('is-open').hide();

            $(this).next().toggleClass('is-open').toggle();
            accordionTabs.find('.is-active').removeClass('is-active');
            $(this).addClass('is-active').then(
            function() {
                console.log( "Accordion Finished" );
            });        
        } else {
            event.preventDefault();
        }
    });  
});

我哪里错了?这是我第一次使用.then

1 个答案:

答案 0 :(得分:-1)

是的,它不起作用,这不是使用它的方式,你需要首先学习promises

它用于替换(或提供替代方式)旧回调机制,使用更简洁的方式处理异步请求,而不是将回调作为参数传递,您可以使用.then链接您的函数,给定函数将执行一次承诺得到解决。

无论如何,这只是一个基本的解释,你应该真正进入承诺书以获取更多信息。

一个简单的例子:

var promise = new Promise(function(resolve, reject) {
   if (true /* everything turned out fine */) {
    resolve("Stuff worked!");
  }
  else {
    reject(Error("It broke"));
  }
});


promise.then(function (x) { // Suppose promise returns "abc"
    console.log(x);
    return 123;
}).then(function (x){
    console.log(x);
}).then(function (x){
    console.log(x)
})