1

尝试放置事件以div使用父容器外部的元素切换 a 时遇到问题。

我试图使用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

});
4

2 回答 2

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/

于 2012-11-14T08:17:52.423 回答
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();
});
于 2012-11-14T08:28:42.020 回答