2011-12-08 63 views
1

我有一堆項目與選中的同一類打開工具提示和下拉菜單。它適用於單個項目,但爲了讓每個人都能使用它的特定子項,我使用了.children()。它似乎在一些地方起作用,但在其他地方卻不起作用。我已經縮小了什麼不起作用,但是爲什麼......請幫助。我努力讓.children()工作

HTML:

<div class="topIcon"> 

<a href="stream.html"><img src="icons/stream16lg.png" /></a> 
<div class="topIconNew"></div> 
<div class="topTip"> 
    <div class="topTipText">Stream</div> 
</div> 
<div class="topDrop">Hello</div> 

</div> 

的jQuery:

$("div.topIconNew").click(function(){ 
//working 
$(this).parent("div.topIcon, div#topSend, div#topTool").css("background-color","#555555"); 
//working 
$(this).children("div.topTip").show(); 
//not working 
$(this).children("div.topTip").animate({width:320,marginLeft:-240},"fast"); 
//not working 
$(this).children("div.topDrop").slideDown(240); 
clicked = true; 
}); 

我沒有包括CSS,因爲我不知道它的真正的問題是在這裏。我想這是我的jQuery,但我真的不知道。任何和所有的幫助表示讚賞。

+3

+1的真棒標題 –

+3

「我掙扎着爬。孩子()的工作。」嘿,存在童工勞動法的原因。 –

+3

你應該開始[「接受」](http://meta.stackexchange.com/a/5235/147495)的答案,並使用額外的投票了任何有用的答案和問題,你會發現(見[這裏](http ://stackoverflow.com/faq#howtoask))。您有權每天投票約30個答案或問題(請參閱[此處](http://meta.stackexchange.com/a/5213/147495))。投票有助於其他人在計算器上找到最有趣的信息。 – Oleg

回答

4

所以我對你的JavaScript有點困惑。例如,div.topIconNew沒有孩子,所以我不知道爲什麼你的$(this).children("div.topTip").show();應該工作?也許你想用$(this).siblings("div.topTip").show();

繼承人的JavaScript代碼會爲你工作:

$("div.topIconNew").click(function(){ 
    $(this).parent("div.topIcon, div#topSend, div#topTool") 
      .css("background-color","#555555"); 

    $(this).siblings("div.topTip") 
      .show() 
      .animate({width:320,marginLeft:-240},"fast"); 

    $(this).siblings("div.topDrop").slideDown(240); 

    clicked = true; 
}); 
+0

啊哈!我覺得我好笨。我很欣賞那個評論,因爲那正是它(我希望)。他們是兄弟姐妹,而不是孩子。但是,當我有.children()。show()時,爲什麼它會工作?奇怪的。我會盡力與兄弟姐妹一起嘗試,並希望這些作品。我簡直不敢相信我錯過了......尤其是考慮了我盯着這該死的代碼多久了。 – jstacks

+0

它的工作原理!儘管我仍然需要找出最好的方法,讓我在外面點擊該下拉菜單時消失......但至少我向正確的方向邁出了一步。謝謝! – jstacks

+0

可能仔細檢查你的結束標籤?這可能是你錯誤地在某處嵌套了一些HTML?只是在這一點猜測,爲什麼它會間歇性地工作 –

0

topTip不是一個孩子或topIconNew任何後代。這是一個兄弟姐妹。所以你想使用.siblings()

$("div.topIconNew").click(function() { 
    $(this).parent("div.topIcon, div#topSend, div#topTool").css("background-color","#555555"); 
    $(this).siblings("div.topTip").show(); 
    $(this).siblings("div.topTip").animate({width:320,marginLeft:-240},"fast"); 
    $(this).siblings("div.topDrop").slideDown(240); 
    clicked = true; 
}); 
1

這些線

<div class="topIconNew"></div> 
<div class="topTip"> 
    <div class="topTipText">Stream</div> 
</div> 
<div class="topDrop">Hello</div> 

應該

<div class="topIconNew"> 
    <div class="topTip"> 
     <div class="topTipText">Stream</div> 
    </div> 
    <div class="topDrop">Hello</div> 
</div> 
+0

爲什麼我的答案被拒絕? –