jquery回调无法正常工作

时间:2011-07-23 17:44:35

标签: jquery

有人能告诉我这个jquery脚本中我做错了什么吗?

$(document).ready(function() { 
    $("a.book").click(function() {
        $(this).parent().next('div').slideToggle('slow', function(){
            $(this).toggleClass('bookopen');
        });
    });
});

我希望div切换,然后我希望元素$a.book更改为$a.bookopen。但是当我在上面编写代码时,切换不起作用。如果我删除了回调函数toggleClass,那么slideToggle就可以了。

有什么想法吗?感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我怀疑对this的引用不是你想要的回调函数。在该行上设置断点以进行检查。

答案 1 :(得分:2)

内部回调中的this引用是针对正在切换的div,而不是触发它的a。你可以关闭对它的引用,

$(document).ready(function() { 
    $("a.book").click(function() {
        var $a = $(this);
        $(this).parent().next('div').slideToggle('slow', function(){
            $a.toggleClass.('bookopen');
        });
    });
});

或者你可以从div的jQuery方法导航回来:

$(document).ready(function() { 
    $("a.book").click(function() {
        $a.parent().next('div').slideToggle('slow', function(){
            $(this).prev('whatever').find('a.book').toggleClass('bookopen');
        });
    });
});

请注意,这取决于元素结构。

答案 2 :(得分:1)

除了harpo提到的变化之外,我认为这行代码:

$a.toggleClass.('bookopen');

应该是这样的:

$a.toggleClass('bookopen');