2010-08-06 87 views
8

我有一組div對('header'和'body')。當用戶點擊標題時,下一個正文部分應該顯示/隱藏(並更新+/-圖標)。所有的div都被寫成在頁面加載時「顯示」,但我想「關閉」其中一些div,如果用戶願意,用戶可以打開它們。只是不能得到它的工作!代碼如下,如果任何人都可以幫忙!切換不起作用

樣品部分:

<div class="expandingSection_head" id="expanderAI"> 
     <img class="imgExpand" src="../images/treeExpand_plus.gif" /> 
      Header text here 
    </div> 
    <div class="expandingSection_body"> 
     body text here 
    </div> 
    ...more pairs of divs like this on rest of page... 

代碼切換:

$(".expandingSection_head").toggle(
    function() { 
     $(this).css('background-color', '#6BA284'); 
     $(this).find('.imgExpand').attr('src', '../images/treeExpand_plus.gif'); 
     $(this).next(".expandingSection_body").slideUp(400); 
    }, 
    function() { 
     $(this).css('background-color', '#6BA284'); 
     $(this).find('.imgExpand').attr('src', '../images/treeExpand_minus.gif'); 
     $(this).next(".expandingSection_body").slideDown(400); 
    }); 

    $("#expanderAI").toggle(); 

最後一行沒有 「切換」 指定的div(即 「關閉」 的話)。有人知道爲什麼可能有些簡單。

謝謝!

+0

是背景顏色和圖像切換? – Patricia 2010-08-06 14:15:08

+0

不幸的是,沒有:( – jqwha 2010-08-06 14:17:30

+0

你有沒有得到這個工作? – Patricia 2010-08-09 13:12:18

回答

5

它不會toggle只需指定:

$("#expanderAI").toggle(); 

應該有它背後的一些事件,例如:

$('element').click(function(){ 
    $("#expanderAI").toggle(); 
}); 

更新:

試試這個:

$('#expanderAI').click(function(){ 
    $(this).toggle(); 
}); 
+0

false:直接從文檔:.toggle()方法綁定一個處理程序的點擊事件,所以觸發點擊規則概述適用於這裏。 – Patricia 2010-08-06 14:19:45

+2

@Patricia:有兩種切換方式,請參閱http://api.jquery.com/toggle/#toggle2,這就是OP所使用的內容。同時請看一下這個變體的例子。 – Sarfraz 2010-08-06 14:21:57

+0

ahhh yes,i mis - 閱讀這個問題,我的錯! – Patricia 2010-08-06 14:26:20

2

在重新閱讀quesiton。我會將其改爲.click(),然後它應該激活之前附加的切換處理程序。

$("#expanderAI").click(); 

編輯:

好嗎:我只是寫一個測試腳本:檢查出來:

<div id="ToggleMe">Toggle Me</div> 
<div id="ChangeMe" style="background-color:Aqua;">Hello WOrld</div> 
<script type="text/javascript"> 
$(function() { 
     $('#ToggleMe').toggle(
      function() { 
       $('#ChangeMe').css('background-color', '#ff0000'); 

      }, 
      function() { 
       $('#ChangeMe').css('background-color', '#000000'); 
      } 

     ); 

     $('#ToggleMe').click(); 


    }); 
</script> 

所以,在div我改變應顯示爲淺綠色,但在頁面加載它是紅色的。 b/c click()事件正在文檔上觸發。

所以把你的$('#ToggleMe')。click();在你附加處理程序後,你的文檔就緒部分,它真的應該工作。證明就在這裏!

+0

這隻會觸發一個點擊不切換,即顯示/隱藏:) – Sarfraz 2010-08-06 14:37:08

+0

我認爲答案是在你們倆之間的一半:)看到我的帖子上面。感謝所有迄今爲止的幫助順便說一句! – jqwha 2010-08-06 14:40:23

+0

只是想知道你是否有更多的想法? :)我真的不想做一個按鈕點擊:) – jqwha 2010-08-06 14:49:26

0

剛剛嘗試了這些想法的變化:)。所以...

如果我只是將最後一個.toggle()更改爲.click()...,但它會工作,如果我進行更改但在頁面加載後調用它。我認爲這裏有一個時間問題。

即如果我添加一個按鈕:

然後執行:

$('#tmpbtntog').click(function() { 
     $('#expanderAI').click(); 
    } 
    ); 

然後點擊按鈕切換股利!但是,如果我只是取代線

$("#expanderAI").toggle(); 

在我上面的原始代碼與.click()它不工作!奇怪的。有任何想法嗎?你能「推遲」這些東西嗎?我在document.ready中調用這個,所以我不認爲這是可能性。

+0

請查看我更新的答案。 – Sarfraz 2010-08-06 14:51:02

1

這是一個令人困惑的

有兩個版本的切換。

Toggle1 - http://api.jquery.com/toggle-event/

Toggle2 - http://api.jquery.com/toggle/#toggle2

看來,如果你在一個事件上下文是,Toggle1將被調用。例如。內點擊功能。

如果您只是在事件函數外部切換(),則會調用Toggle2。如果你想切換這個,你必須傳入true/false。顯示爲真,隱藏。或者只是傳遞持續時間和動畫類型等......只需檢查API :)