在父级之外切换Javascript

时间:2012-11-14 08:12:25

标签: javascript jquery html

尝试使用父容器外部的元素切换div时,我遇到了问题。

我尝试使用span标记从父元素外部定位相同的行为。

任何帮助都会感激不尽。

HTML:

<div class='toggle_parent'>
    <div class='toggleHolder'>
      <span class='toggler'>Open</span> 
      <span class='toggler' style='display:none;'>Close</span>
    </div>

    <div class='toggled_content' style='display:none;width:100%;height:400px;'>
        <h2>Hello This Is My Content Right Here</h2>
        <span class='toggler btn btn-large'>Close</span>      
    </div>
</div>



 <!-- I need this element to trigger from outside -->
 <span class="toggler btn btn-large btn-info">Gain Early Access</span>

使用Javascript:

$('.toggler').live('click',function(){
/*   $(this).parent().children().toggle();  //swaps the display:none between the two spans */
$(this).parent().parent().find('.toggled_content').slideToggle();  //swap the display of the main content with slide action

});

2 个答案:

答案 0 :(得分:0)

只需使用全局父div。

<div id="container">
    <div class='toggle_parent'>
        <div class='toggleHolder'>
          <span class='toggler'>Open</span> 
          <span class='toggler' style='display:none;'>Close</span>
        </div>

        <div class='toggled_content' style='display:none;width:100%;height:400px;'>
            <h2>Hello This Is My Content Right Here</h2>
            <span class='toggler btn btn-large'>Close</span>      
        </div>
    </div>


    <!-- I need this element to trigger from outside -->
    <span class="toggler btn btn-large btn-info">Gain Early Access</span>
</div>

你可以这样做:

var container = $('#container');
container.on('click', '.toggler', function() {
    container.find('.toggleHolder .toggler').toggle();
    container.find('.toggle_content').slideToggle();
});

顺便说一句,如果您使用jQuery 1.7或更高版本,则不推荐使用live。见http://api.jquery.com/live/

答案 1 :(得分:0)

修改你的榜样以达到目的。

<div id="container">
    <div>
        <div>
          <span class='open'>Open</span> 
          <span class='close' style='display:none;'>Close</span>
        </div>

        <div class='content' style='display:none;width:100%;height:400px;'>
            <h2>Hello This Is My Content Right Here</h2>
            <span class='close'>Close</span>      
        </div>
    </div>
    <!-- I need this element to trigger from outside -->
    <span class="toggle">Gain Early Access</span>
</div>

$(".toggle").click( function( ) {
    $(".content").slideToggle();
});
$(".open").click( function( ) {
    $(".content").slideDown();
});
$(".close").click( function( ) {
    $(".content").slideUp();
});