2013-08-12 3 views
0

Я пытаюсь создать тему Tumblr, в которой ссылки и сообщения публикуются, когда вы нажимаете знак +. (Мой тестовый блог на http://noitsnotitsnotokay.tumblr.com/).slideToggle() запускается много раз?

Я совсем begginner на JavaScript, но я был в состоянии работать это для меню ссылок с помощью следующего кода:

<span class="btn">+</span> 
<ul class="lks"> 
<!-- various links are here --> 
</ul> 

<script> 
$("ul.lks").hide(); 
$("span.btn").click(function() { 
    $("ul.lks").slideToggle("slow"); 
}); 
</script> 

Но я также есть кусок кода, который применяется ко всем сообщениям, для информации о сообщении. Я использовал почти тот же код, но, как вы, вероятно, видите, он скользит в разные моменты времени.

<div class="pstinfo"> 
    <!-- info is here --> 
</div> 
<span class="plsign">+</span> 

<script> 
$("div.pstinfo").hide(); 
$("span.plsign").click(function() { 
    $("div.pstinfo").slideToggle("slow"); 
}); 
</script> 

Похоже, что порядок кнопки и способ, которым я называю классы в JavaScript, не сильно меняются ... любые советы?

ответ

0

код блока 01

<span class="btn">+</span> 
<ul class="lks"> 
<!-- various links are here --> 
</ul> 

<script> 
$("ul.lks").hide(); 
$("span.btn").click(function() { 
    $("ul.lks").stop().slideToggle("slow"); 
}); 
</script> 

Код блока 02

<div class="pstinfo"> 
    <!-- info is here --> 
</div> 
<span class="plsign">+</span> 

<script> 
$("div.pstinfo").hide(); 
$("span.plsign").click(function() { 
    $("div.pstinfo").stop().slideToggle("slow"); 
}); 
</script> 

Попробуйте этот код и обновить результат :)

+0

Это похоже на работу каждый второй пост, по какой-то причине ... (на том же предварительном просмотре http://noitsnotitsnotokay.tumblr.com /) нечетные сообщения показывают и скрывают небольшую строку: S – user2303451

+0

, похоже, это какой-то глюк Tumblr, потому что он работает в предварительном просмотре, когда я его настраиваю! поэтому yay: D – user2303451

+0

Использовал ваш [jsFiddle] (http://jsfiddle.net/DL6QZ/3/) добавленный контент. Но не может воспроизвести вашу проблему. Возможно, есть еще одна ошибка в вашем или коде tumblr? – Martin

1

Если вы не хотите, чтобы открыть все». pstinfo ', когда вы нажимаете «.plsign», просто подключите, попробуйте этот код:

HTML:

<div class='parentContainer'> <!--put your elements in a parent Container --> 
     <div class='info'> 
      Info 1 
     </div> 
     <div class='plsign'> 
      + Open 
     </div> 
    </div> 
    <div class='parentContainer'> 
     <div class='info'> 
      Info 2 
     </div> 
     <div class='plsign'> 
      + Open 
     </div> 
    </div> 
    <div class='parentContainer'> 
     <div class='info'> 
      Info 3 
     </div> 
     <div class='plsign'> 
      + Open 
     </div> 
    </div> 

JS:

$(".plsign").on('click',function() 
{ 
    $(this).parent().find('.info').slideToggle("slow"); 
}); 

Ссылка на jsFiddle

+0

Я попытался добавить это, но кажется, что он работает на любом другом div по какой-то причине? – user2303451

+0

Попробуйте использовать .each и .click http://jsfiddle.net/SFMTB/29/. У вас также есть более одного div с одним и тем же идентификатором: «внешний». Идентификатор должен быть уникальным. –

Смежные вопросы