Я изо всех сил пытаюсь заставить .children () работать - PullRequest
1 голос
/ 08 декабря 2011

У меня есть куча предметов того же класса, что и при выборе открыть всплывающую подсказку и всплывающее меню. Он работает с одним элементом, но для того, чтобы каждый работал со своим конкретным дочерним элементом, я использовал .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 ]

4 голосов
/ 08 декабря 2011

Так что я немного озадачен тем, какой у вас 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;
});
1 голос
/ 08 декабря 2011

Эти строки

<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 голосов
/ 08 декабря 2011

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;
});
...