2013-07-23 51 views
0

如果我的.click()觸發器嵌套在另一個div(名稱爲div.click)中,如何摺疊div.collapse?嵌套.click()觸發器鏈接需要摺疊主div

如果我的.click()觸發器與div.collapse在同一個div中,我已經獲得了腳本的工作,這是我的#main。現在我想把我的觸發器放在一個名爲'click'的div中。這是我想擁有的結構:

<div id="main">  
    <div class="collapse" style="display:none;"> 
    my content 
    </div> 
    <div class="click"> 
    <a title="Click here to see the collapse div" alt="Expand" class="expand" href="javascript:void(0);">click here</a> 
    </div> 
</div> 

這是我的jQuery代碼,到目前爲止,我不知道如何讓它搜索一個DIV早在HTML結構:

$jq("a.expand").click(function() 
    { 
    // hides matched elements if shown, shows if hidden 
    $jq("a.expand").prev("div.collapse")[o.method](o.speed); 
    $jq("a.expand").prev("div.collapse").prev()[o.method](o.speed); 

    return false; 
    }); 

我希望有人能幫助我,謝謝!

+0

不知道,但我認爲以前指的是'a.expand'的前一個兄弟不存在。你應該參考父母兄弟姐妹。 – Sebastien

+0

也許像'$ jq(「a.expand」)。parent()。prev(「div.collapse」)[o.mthod](0.speed);' – Sebastien

+0

您提供的示例是I不幸的是沒有任何運氣。 – nerdrocker

回答

0
$jq("a.expand").click(function(e) { 
    e.preventDefault(); 
    // hides matched elements if shown, shows if hidden 
    $jq(this).parent().prev()[o.method](o.speed); 
}); 

$(this)是被點擊的元件。 parent()選擇直接父母。 prev()選擇緊鄰目標元素之前的兄弟。我也用e.preventDefault()取代了你的return false;

+0

但OP正在使用'return false'。 'e.preventDefault()'和'return false'是一樣的嗎? – Praveen

+0

@ user1671639不完全是:http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return-false –

+0

對不起,傑森P,沒有工作。任何其他選項? – nerdrocker

0

相反,您可以使用.toggle()

$jq("a.expand").click(function() 
    { 
    // hides matched elements if shown, shows if hidden === Toggle 
    $jq(".collapse").toggle(); 

    return false; 
    }); 
+0

感謝您的回覆,但我瞭解.toggle()會做些什麼。事情是,劇本就像一個魅力。它只會剎車,如果我將觸發器點擊()移動到另一個div,所以我不知道什麼是正確的遍歷,使其再次工作。 – nerdrocker