jQuery动画div切换器为相应的列表项

时间:2011-10-27 01:02:36

标签: jquery

我正在学习jquery并且遇到了麻烦。我正在构建一个包含两个部分的页面。一个是无序的食物类型列表。另一个是一组div,每个都显示不同类型的啤酒,可以补充每种食物类型。每个列表项及其对应的div共享同一个类。所有的div都位于视野开始之外。

我想要完成的是每个列表项的onclick,无论视图中的div是不在视图中的动画,然后单击的列表项的相应div动画到视图中。

我得到了这个工作,但由于某种原因,它停止了工作。我不知道这是否与我的代码有关,或者是否有更好的方法来完成这个项目。

    $(function(){
       $('.beer_container > div.default').css('top', '0');
       $('ul.food_items li').click(function(){
        var theClass = $(this).attr('class');
        var $theBeer = $('div.beer_container > div[class="+ theClass +"]');
        var $oldBeer = $('div.beer_container > div:not([class="+ theClass +"])');

          $oldBeer.animate(
           {'top': '-420'}, 
            'slow', function(){
          $theBeer.animate(
           {'top': '0'}, 'slow');
           });
         });

      });




        <div class="left food_container">
          <ul class="food_items">
            <li class="lighter_foods">Lighter Foods</li>
            <li class="classic_burger">Classic Burger</li>
            <li class="strong_spicy">Strong &amp; Spicy</li>
            <li class="rich_hearty">Rich &amp; Hearty</li>
            <li class="smoked">Smoked Meats</li>
          </ul>
        </div>
        <div class="right beer_container">
          <div class="default">
            This is the intro page. What are you eating?
          </div>
          <div class="lighter_foods">
            Blonde Ale, Hefeweizen, Wheat Ale, Witbier, Pilsener
          </div>
          <div class="classic_burger">
            Pale Ale, Amber/Red Ale, Amber Lager
          </div>
          <div class="strong_spicy">
            IPA, Amber/Red Ale, Abbey Tripel, Sweet or Oatmeal Stout, Oktoberfest/Maerzen, Pale Bock
          </div>
          <div class="rich_hearty">
            Bitter, Scotch Ale, Brown Ale, Abbey Dubbel, Old or Strong Ale, Porter, Dry Stout, Dunkelweizen, Weizenbock, Doppelbock, Dark Lager
          </div>
          <div class="smoked">
            Double/Imperial IPA, Brown Ale, Abbey Dubbel, Porter, Imperial Stout
          </div>
        </div>

1 个答案:

答案 0 :(得分:0)

看起来有些单引号变为双引号。

var $theBeer = $('div.beer_container > div[class=' + theClass + ']');
var $oldBeer = $('div.beer_container > div:not([class=' + theClass + '])');

我不支持这种定位方法,但你绝对不想用“+ theClass +”类来寻找div