2013-10-27 95 views
0

這就是我想要它做的......Jquery如果/然後在點擊功能?

Div時稱爲「BD」點擊>檢查是否有「UMP」的ID的div有一類的「活動」> 如果這樣做,得到div放入'brandDump'類中,緩慢滑動,隱藏它,然後移除'active'類,否則,將class'brandDump'的div放下並展開,並添加'active'類

當我點擊div.bd時沒有任何事情發生。我究竟做錯了什麼?

小提琴鏈接和代碼如下。

http://jsfiddle.net/K2V8f/36/

<div class="bd">cool</div> 
<div class="brandDump" id="ump">works</div> 
<div>shape</div> 

.brandDump { 
background-color:#fff; 
width:100px; 
display:none; 
} 

.bd { 
width:100px; 
height:100px; 
background-color:#000; 
} 

$(".bd").click(function() { 
if ("#ump".hasClass("active")) { 
    $(".brandDump").slideUp("slow"); 
    $(".brandDump").hide(); 
    $(".brandDump").removeClass("active"); 
} else { 
    $(".brandDump").slideDown("slow"); 
    $(".brandDump").show(); 
    $(".brandDump").addClass("active"); 
} 
}); 

回答

2

Updated fiddle

您需要的時候完成效果基本show使用回調。

$(".bd").click(function() { 
    if ($("#ump").hasClass("active")) { 
     $(".brandDump").slideUp("slow", function() { 
      $(".brandDump").removeClass("active"); 
     }); 

    } else { 
     $(".brandDump").slideDown("slow", function() { 
      $(".brandDump").addClass("active"); 
     }); 

    } 

}); 

而且不存在與( 「#ump」)......應該是$( ​​「#UMP」)的錯誤

+0

課程,工作...謝謝主席先生,和/或女士中。 – user2859646

+0

請注意,不需要調用'.hide()'和'.show()',因爲滑動功能已經處理了該功能。 – nnnnnn

+0

p/s:很高興知道您可以在jQuery中鏈接方法http://tobiasahlin.com/blog/quick-guide-chaining-in-jquery/ – Terry

1

的問題是,你有:

"#ump".hasClass(... 

...當你應該已經有:

$("#ump").hasClass(... 

但同時要注意.slideUp().slideDown()方法隱藏和顯示你r元素,因此您不需要撥打.hide().show()。此外,它是更有效的鏈jQuery方法一起,如果你希望他們在相同的元素進行操作:

$(".bd").click(function() { 
    if ($("#ump").hasClass("active")) { 
     $(".brandDump").slideUp("slow") 
         .removeClass("active"); 
    } else { 
     $(".brandDump").slideDown("slow") 
         .addClass("active"); 
    } 
}); 

演示:http://jsfiddle.net/K2V8f/50/

「是否與‘人民運動聯盟’的id div有一類「活動」>如果這樣做,得到分度類的「brandDump」,慢慢地往上」的

id爲ump股利是 div與brandDump一樣。我不確定爲什麼你在談論他們,就好像他們是兩個不同的div,事實上你的代碼似乎使用#ump.brandDump選擇器可以互換選擇一個div,但是如果你把它們看作一個更一致的你可以減少你的函數到一個行:

$(".bd").click(function() { 
    $(".brandDump").slideToggle("slow").toggleClass("active"); 
}); 

演示:http://jsfiddle.net/K2V8f/51/