2013-03-13 49 views
1

我只想切换click动作中slideToggled的div内的“.plus”和“.minus”元素。jquery隐藏元素的实例

HTML

<div class="notification-box-heading"> 
    This is an Alert! 
    <span class="plus"><img src="http://www.cti-w.com/images/info.png"></span> 
    <span class="minus"><img src="http://www.cti-w.com/images/close.png"></span> 
</div> 

<div class="notification-box-body"> 
    <strong>This is an alert!</strong> 
    <p>This is the alert subtext.</p> 
</div> 

<div class="notification-box-heading"> 
    This is another Alert! 
    <span class="plus"><img src="http://www.cti-w.com/images/info.png"></span> 
    <span class="minus"><img src="http://www.cti-w.com/images/close.png"></span> 
</div> 

<div class="notification-box-body"> 
    <strong>This is an alert!</strong> 
    <p>This is the alert subtext.</p> 
</div> 

JS

$(document).ready(function() { 
    //hide the all of the element with class notification-box-body 
    $(".notification-box-body").hide(); 
    //hide the all of the element with class minus 
    $(".minus").hide(); 
    //slides the element with class "notification-box-body" when paragraph with class "notification-box-heading" is clicked 
    $(".notification-box-heading").click(function() { 
     $(this).next("div.notification-box-body").slideToggle(300); 
     $(".minus").toggle(); 
     $(".plus").toggle(); 
    }); 
}); 

http://jsfiddle.net/tqD6S/2/

任何想法?

回答

1

被切换的元件,.notification-box-body包含.minus.plus元素的元素。相反,容器元素实际上是被点击的元素,.notification-box-heading

尝试:

$(".notification-box-heading").click(function() { 
    $(this).next("div.notification-box-body").slideToggle(300); 
    $(this).find(".minus,.plus").toggle(); 
}); 

jsFiddle demo

2
$(".minus", this).toggle(); 
    $(".plus", this).toggle(); 

第二个参数定义范围。

0
$(document).ready(function() { 
    //hide the all of the element with class notification-box-body 
    $(".notification-box-body").hide(); 
    //hide the all of the element with class minus 
    $(".minus").hide(); 
    //slides the element with class "notification-box-body" when paragraph with class "notification-box-heading" is clicked 
    $(".notification-box-heading").click(function() { 
     $(this).next("div.notification-box-body").slideToggle(300); 
     $(this).find(".minus").toggle(); 
     $(this).find(".plus").toggle(); 
    }); 
}); 

jsFiddle