在打开任何子项时将类添加到PARENT

时间:2015-11-05 17:35:41

标签: javascript jquery

我写了这段代码:

rem

如何添加"打开"当jQuery(document).ready(function () { jQuery('.custom_item').on('click', function (evt) { var $button = jQuery(this); var $tr = $button.closest('div'); //better change here to closest var $div = $tr.find('.detail_block'); //current div jQuery('.detail_block').not($div).slideUp(); //hide all other div's not the current one $div.slideToggle(); }); }); .customer_wrap被打开时,课程为.detail_block

我尝试了不同的方法,但似乎无法使其发挥作用。如果有人能帮我一把。谢谢

这里有一个小提琴示例,让您准确了解我尝试做的事情:http://jsfiddle.net/3xq7t2yh/

1 个答案:

答案 0 :(得分:0)

如果你想查看任何.detail_block div是否可见..并在slideToggle()回调函数中使用此代码

if(jQuery('.detail_block:visible').length > 0){
 // div open
}else{
  // div close
}

您的完整代码

   jQuery(document).ready(function(){  
        jQuery('.custom_item').on('click', function (evt) {
            var $button = jQuery(this);
            var $tr = $button.parent();//better change here to closest
            var $div = $button.find('.detail_block');//current div
            jQuery('.detail_block').not($div).slideUp(); //hide all other div's not the current one
            $div.slideToggle(200, function(){
               if(jQuery('.detail_block:visible').length > 0){
                 // div open
                 $tr.addClass('open');
                }else{
                  // div close
                  $tr.removeClass('open');
                } 
            });
       });      
   });  

DEMO

另一种方式

if($div.is(':visible')){
             // div open
                    $tr.addClass('open');
          }else{
              // div close
                  $tr.removeClass('open');
          } 

您的完整代码

jQuery(document).ready(function(){   
    jQuery('.custom_item').on('click', function (evt) {
        var $button = jQuery(this);
        var $tr = $button.parent();//better change here to closest
        var $div = $button.find('.detail_block');//current div
        jQuery('.detail_block').not($div).slideUp(); //hide all other div's not the current one
       $div.slideToggle(200, function(){
         if($div.is(':visible')){
             // div open
                    $tr.addClass('open');
          }else{
              // div close
                  $tr.removeClass('open');
          } 
        });
    });   
});  

DEMO

解释:如果任何.detail_block可见,这段代码会将类“open”添加到.customer_wrap div中。但如果它全部隐藏,它将从.customer_wrap删除类“open”