2014-08-27 37 views
1

我目前有3個div,它可以多於三個,每個div都有一個錨標記,錨標記具有點擊功能,可以在同一父級中打開UL。我想要的是我可以打開UL並關閉它們而不影響其他人。我用oops概念做了一個函數,但它不能按我的需要工作。下一個錨標籤需要兩次點擊。它可以通過oops邏輯完成,或者我們必須選擇另一種方式。 fiddle存儲價值並在JavaScript中重複使用oops

$(function(){ 

    function get(){ 
     this.a=1; 
     this.show= function(a){  
      $(this).parent().find('ul').slideDown() 
     }; 
     this.hide= function(a){ 
      $(this).parent().find('ul').slideUp() 
     } 
    } 

    var n= new get(); 
    $('a').click(function(){ 
     if(n.a){ 
      n.show.call(this) 
      n.a=0; 
     } 
     else{ 
      n.hide.call(this) 
      n.a=1; 
     } 
    }); 

}); 
+1

那個小提琴的鏈接是空的。 – 2014-08-27 19:26:07

+0

你的意思是你的JSFiddle鏈接只是去JSFiddle網站,或者你設置了一個小提琴來查看這個代碼? – ryanpitts1 2014-08-27 19:28:00

+0

我有編輯小提琴鏈接,這是http://jsfiddle.net/2kbbgvts/ – Carlos 2014-08-27 19:29:23

回答

1

你可以做的正是你想要什麼:

$('a').click(function(){ 
    $(this).parent().find('ul').slideToggle() 
}); 

小提琴:http://jsfiddle.net/2kbbgvts/1/

編輯: 此外,要做到這一點的方式的一種方式,你試圖去做與關閉:

$('a').each(function(){ 
    var anchor = $(this); 
    var shown = false; 
    function toggle(){ 
     if(shown) anchor.parent().find('ul').slideUp() 
     else $(this).parent().find('ul').slideDown() 
     shown = !shown; 
    } 
    anchor.click(toggle); 
}); 

This只是爲了演示如何這樣的事情可以完成。在這種情況下使用slideToggle和fadeToggle要簡單得多。 http://jsfiddle.net/2kbbgvts/2/

+0

謝謝你回答這個問題,你的答案工作正常,但當我們使用像fadeIn和fadeOut而不是slideToggle,那麼我們如何管理它 – Carlos 2014-08-27 19:31:00

+0

這是我也會這樣做。或者使用'$('a')。on('click',function(){'而不是'$('a')。點擊(函數(){'爲第一行 - 只是個人偏好。 – ryanpitts1 2014-08-27 19:31:23

+0

切換淡出只需用'fadeToggle'改變'slideToggle'。參見:http://api.jquery.com/category/effects/ – ryanpitts1 2014-08-27 19:34:00

相關問題