有人能告诉我这个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
就可以了。
有什么想法吗?感谢您的帮助。
答案 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');