由于某种原因,代码表现得很奇怪。 这在If Else函数中发生。在Else部分,它应该超过1000毫秒fadeOut然后删除Class然后进入下一个语句。但显然第二个声明首先被召唤出来,这让一切变得糟糕。 :(。
$(function() {
$(document).click(function(e) {
if((e.target.id == 'RWorld') || (e.target.id == 'abc'))
{
$(".sborder").fadeOut(1000, function() {
$(".sborder").removeClass("sborder");
});
}
});
$("div#inner").children().click(function() {
//$("div#inner .sborder").removeClass("sborder");
var name = $(this).attr('id');
//alert($("div#inner").find("div").hasClass("sborder"));
if($(".sub"+name).hasClass("sborder"))
{
$(".sub"+name).fadeOut(300, function() {
$(".sub"+name).removeClass("sborder");
});
}
else
{
$(".sborder").fadeOut(1000, function() {
$(".sborder").removeClass("sborder");}); // The Problem is in here. This piece of Code doesnt work exactly as i thought it would ...
$(".sub"+name).addClass("sborder").fadeIn(1000);
}
});
});
请帮忙:(。
答案 0 :(得分:3)
您的代码:
$(".sborder").fadeOut(1000, function() {
$(".sborder").removeClass("sborder");});
$(".sub"+name).addClass("sborder").fadeIn(1000);
正确缩进:
$(".sborder").fadeOut(1000, function() {
$(".sborder").removeClass("sborder");
});
$(".sub"+name).addClass("sborder").fadeIn(1000);
你可能想要什么:
$(".sborder").fadeOut(1000, function() {
$(".sborder").removeClass("sborder");
$(".sub"+name).addClass("sborder").fadeIn(1000);
});
答案 1 :(得分:1)
你可能希望fadeIn与淡出同时发生,对吗?在这种情况下,您需要缓存查询结果,如下所示:
var $sborder = $(".sborder");
$sborder.fadeOut(1000, function() {
$sborder.removeClass("sborder");
});
$(".sub" + name).addClass("sborder").fadeIn(1000);
你的问题是removeClass(“sborder”)正在删除你添加到$(“。sub”+ name)的sborder类,因为它发生在1秒后。换句话说,事情发生的顺序如下:
在最佳实践说明中,使用jQuery时...
答案 2 :(得分:0)
$(".sborder").fadeOut(1000, function() {
$(this).removeClass("sborder"); // $(this) is enough to refer to current $('.sborder')
$(".sub"+name).addClass("sborder").fadeIn(1000);
});