如何在第一次点击时设置slideToggle open div?

时间:2014-08-23 15:54:12

标签: javascript jquery

演示:http://jsfiddle.net/sky94132003/gbptvmnk/

我为我的网站创建了评论功能

有一个按钮供用户点击回复评论。

onclick函数将做一些事情

1. open slideToggle
2. animate scrollTop to the comment box (textarea)
3. animate backgroundColor (notic user where comment.)


$(function() {
    $( ".reply_video" ).click(function() {
      $(".comment_reply_video").slideToggle( "fast" );
         $('html,body').animate({
              scrollTop:$('.comment_reply_video').offset().top-90}, 800);
          $(".comment_reply_video").animate({
                backgroundColor: '#CCC'
          }, 800 );      
         setTimeout(function() {
                $(".comment_reply_video").animate({
                    backgroundColor: '#FFF'
              }, 1200 );
         }, 1500); 

      $(".r_all").focus();
    });
});

但是用户点击第一个将打开slideToggle。

我怎样才能设置刚刚第一个将是活动的slideToggle函数?

如果打开。 onclick只是为了做

2.animate scrollTop to the comment box (textarea)    
3.animate backgroundColor (notic user where comment.)

并且不要关闭slideToggle

2 个答案:

答案 0 :(得分:0)

我已经更新了你的代码。

在切换事件中添加了$(".reply_video").off("click")

$( ".reply_video" ).click(function() {
  $(".comment_reply_video").slideToggle( "fast" );
     $('html,body').animate({
          scrollTop:$('.comment_reply_video').offset().top-90}, 800);
      $(".comment_reply_video").animate({
            backgroundColor: '#CCC'
      }, 800 );      
     setTimeout(function() {
            $(".comment_reply_video").animate({
                backgroundColor: '#FFF'
          }, 1200 );
     }, 1500); 
    $(".reply_video").off("click");
  $(".r_all").focus();
});

答案 1 :(得分:0)

用.one替换.click('点击',... 例如:

 $( ".reply_video" ).one('click',function() { ... });

但是,如果您还想要辅助功能,请使用.is(':可见')功能。

实施例: (内部点击事件)

$( ".reply_video" ).click(function() {
    if (!$(".comment_reply_video").is(":visible")) {
  $(".comment_reply_video").slideToggle( "fast" );
     $('html,body').animate({
          scrollTop:$('.comment_reply_video').offset().top-90}, 800);
      $(".comment_reply_video").animate({
            backgroundColor: '#CCC'
      }, 800 );      
     setTimeout(function() {
            $(".comment_reply_video").animate({
                backgroundColor: '#FFF'
          }, 1200 );
     }, 1500); 
    }

  $(".r_all").focus();
});