2011-12-08 12 views
1

同じクラスのアイテムがあり、ツールチップとドロップダウンメニューを開いて選択すると、同じクラスが表示されます。それは単一の項目で動作しますが、それぞれが特定の子で動作するようにするために、私は.children()を使用しています。それはいくつかの場所で動作するように見えるが、他の場所では動作しないようだ。私は何がうまくいかないのかを絞り込んだのですが、どうして...助けてくださいかについては全く考えていません。私はそれが問題はここにあるものは本当にだか分からないので、私はCSSを含めていない.children()を動作させるのに苦労しています

$("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; 
}); 

<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:HTML

。私はそれが私のjQueryだと思っていますが、私は本当にわかりません。すべての助けをいただければ幸いです。

+3

+1でなければなりません –

+3

"私は仕事に)(.childrenを取得するために苦労しています。"ねえ、児童労働法が存在する理由があります。 –

+3

あなたは答えを["受け入れる"](http://meta.stackexchange.com/a/5235/147495)から始めて、あなたが見つけた有益な答えと質問を追加投票する必要があります。 ://stackoverflow.com/faq#howtoask))。 1日あたり約30件の回答や質問を投票する権利があります([ここ](http://meta.stackexchange.com/a/5213/147495)を参照)。投票は他の人がstackoverflowに関する最も興味深い情報を見つけるのに役立ちます。 – Oleg

答えて

4

あなたはJavaScriptを少し混乱しています。たとえば、div.topIconNewには子供がいないので、なぜあなたの$(this).children("div.topTip").show();がうまくいくのでしょうか?おそらく$(this).siblings("div.topTip").show();を使用したいですか?あなたのために働くだろう

HERESには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

Aha!私は馬鹿だと感じる。私はそのコメントを感謝します。それはまさにそれです(私は願っています)。彼らは兄弟であり、子供ではありません。しかし、なぜ、私が.children()を持っているときに、それがなぜうまくいくのですか?show()?奇妙な。私は兄弟とそれを試してみようとうまくいけばそれは動作します。私はそれを逃したとは思っていません。 – jstacks

+0

それは動作します!私は外をクリックすると気をつけてドロップダウンする最善の方法を見つけ出す必要がありますが、少なくとも正しい方向に1歩進んでいます。ありがとうございました! – 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

私の答えはなぜ投票されたのですか? –

関連する問題