1

4 つのフローティング div があります。div 内の A タグにカーソルを合わせると、これら 4 つの div の下部に div が表示され、クリックが発生した div に対応します。私は自分の知る限り JQuery を最適化しましたが、他に解決策があるかどうかを知りたかっただけです。

私のフィドル: http://jsfiddle.net/jonxblaze/PyHH5/

HTML

<div class="wrap">
<div class="promo red">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

    <p><a href="#">More</a></p>
</div> 
<div class="promo yellow">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

    <p><a href="#">More</a></p>
</div>    
<div class="promo blue">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

    <p><a href="#">More</a></p>
</div>
 <div class="promo black">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>

    <p><a href="#">More</a></p>
</div>
<div style="clear:both"></div>   

<div class="red wide-full">RED CONTENTS</div>
<div class="yellow wide-full">YELLOW CONTENTS</div>
<div class="blue wide-full">BLUE CONTENTS</div>
<div class="black wide-full">BLACK CONTENTS</div>

JQuery

$('.yellow.wide-full, .blue.wide-full, .black.wide-full').hide();

$('.promo a').hover( function() {

            var parentDiv = $(this).parents().filter('.promo'),
                wideFull  = $('.wide-full');    

            switch (true) { 
                case parentDiv.hasClass('red'):
                    $('.red.wide-full').show();
                    wideFull.not('.red').hide();
                    break; 
                case parentDiv.hasClass('yellow'):
                    $('.yellow.wide-full').show();
                    wideFull.not('.yellow').hide();
                    break;                  
                case parentDiv.hasClass('blue'):
                    $('.blue.wide-full').show();
                    wideFull.not('.blue').hide();
                    break; 
                case parentDiv.hasClass('black'): 
                    $('.black.wide-full').show();
                    wideFull.not('.black').hide();
                    break;  
            }
        })
4

1 に答える 1

3

data属性を使用して、対応する div を参照することもできます。

$('.wide-full:not(.red)').hide();

$('.promo a').hover(function() {
    $('.wide-full').hide().filter('.' + $(this).data('type')).show();
});

http://jsfiddle.net/PyHH5/3/

このために、HTML を少し変更しました。

<a href="#" data-type="yellow">More</a>
于 2013-03-06T18:00:19.057 に答える