2012-06-01 39 views
0

如果某個類具有特定的類名,我需要運行腳本。Jquery .hasClass問題

使用IM的超大型插件,要運行這個JavaScript如果滑0是activeslide,如果它不是我不希望它運行腳本的activeslide。

JS代碼即時通訊使用如下。沒有If語句,它工作正常,但If語句不起作用。

任何幫助,非常感謝。

<script type="text/javascript"> 
    if ($("#supersized .slide-0").hasClass('activeslide')) 
{$(function() { 
      var $tf_bg    = $('#tf_bg'), 
       $tf_bg_images  = $tf_bg.find('img'), 
       $tf_bg_img   = $tf_bg_images.eq(0), 
       $tf_thumbs   = $('#tf_thumbs'), 
       total    = $tf_bg_images.length, 
       current    = 0, 
       $tf_content_wrapper = $('#tf_content_wrapper'), 
       $down   = $('#down'), 

       $tf_loading   = $('#tf_loading'); 

      //preload the images     
      $tf_bg_images.preload({ 
       onComplete : function(){ 
        $tf_loading.hide(); 
        init(); 
       } 
      }); 


      //shows the first image and initializes events 
      function init(){ 
       //get dimentions for the image, based on the windows size 
       var dim = getImageDim($tf_bg_img); 
       //set the returned values and show the image 
       $tf_bg_img.css({ 
        width : dim.width, 
        height : dim.height, 
        left : dim.left, 
        top  : dim.top 
       }).fadeIn(); 

       //resizing the window resizes the $tf_bg_img 
      $(window).bind('resize',function(){ 
       var dim = getImageDim($tf_bg_img); 
       $tf_bg_img.css({ 
        width : dim.width, 
        height : dim.height, 
        left : dim.left, 
        top  : dim.top 
       }); 
      }); 



       //click the arrow down, scrolls down 
       $down.bind('click',function(){ 
        if($tf_bg_img.is(':animated')) 
         return false; 
         scroll('tb'); 
       }); 



      } 


      //show next/prev image 
      function scroll(dir){ 
       //if dir is "tb" (top -> bottom) increment current, 
       //else if "bt" decrement it 
       current = (dir == 'tb')?current + 1:current - 1; 

       //we want a circular slideshow, 
       //so we need to check the limits of current 
       if(current == total) current = 0; 
       else if(current < 0) current = total - 1; 


       //we get the next image 
       var $tf_bg_img_next = $tf_bg_images.eq(current), 
        //its dimentions 
        dim    = getImageDim($tf_bg_img_next), 
        //the top should be one that makes the image out of the viewport 
        //the image should be positioned up or down depending on the direction 
         top = (dir == 'tb')?$(window).height() + 'px':-parseFloat(dim.height,10) + 'px'; 

       //set the returned values and show the next image 
        $tf_bg_img_next.css({ 
         width : dim.width, 
         height : dim.height, 
         left : dim.left, 
         top  : top 
        }).show(); 

       //now slide it to the viewport 
        $tf_bg_img_next.stop().animate({ 
         top  : dim.top 
        },1000); 

       //we want the old image to slide in the same direction, out of the viewport 
        var slideTo = (dir == 'tb')?-$tf_bg_img.height() + 'px':$(window).height() + 'px'; 
        $tf_bg_img.stop().animate({ 
         top  : slideTo 
        },1000,function(){ 
        //hide it 
         $(this).hide(); 
        //the $tf_bg_img is now the shown image 
         $tf_bg_img = $tf_bg_img_next; 
        //show the description for the new image 
         $tf_content_wrapper.children() 
              .eq(current) 
              .show(); 
      }); 
       //hide the current description 
        $tf_content_wrapper.children(':visible') 
             .hide() 

      } 

      //animate the image to fit in the viewport 
      function resize($img){ 
       var w_w = $(window).width(), 
        w_h = $(window).height(), 
        i_w = $img.width(), 
        i_h = $img.height(), 
        r_i = i_h/i_w, 
        new_w,new_h; 

       if(i_w > i_h){ 
        new_w = w_w; 
        new_h = w_w * r_i; 

        if(new_h > w_h){ 
         new_h = w_h; 
         new_w = w_h/r_i; 
        } 
       } 
       else{ 
        new_h = w_w * r_i; 
        new_w = w_w; 
       } 

       $img.animate({ 
        width : new_w + 'px', 
        height : new_h + 'px', 
        top  : '0px', 
        left : '0px' 
       },350); 
      } 

      //get dimentions of the image, 
      //in order to make it full size and centered 
      function getImageDim($img){ 
       var w_w = $(window).width(), 
        w_h = $(window).height(), 
        r_w = w_h/w_w, 
        i_w = $img.width(), 
        i_h = $img.height(), 
        r_i = i_h/i_w, 
        new_w,new_h, 
        new_left,new_top; 

       if(r_w > r_i){ 
        new_h = w_h; 
        new_w = w_h/r_i; 
       } 
       else{ 
        new_h = w_w * r_i; 
        new_w = w_w; 
       } 


       return { 
        width : new_w + 'px', 
        height : new_h + 'px', 
        left : (w_w - new_w)/2 + 'px', 
        top  : (w_h - new_h)/2 + 'px' 
       }; 
       } 

     }); 

} 
</script> 
+1

看到你的HTML結構將有助於解決您的問題裏面。 – nebulousGirl

回答

0

最有可能在if語句的時候,jQuery還沒有準備好。 嘗試把它的功能齊全$(function(){ if... })

+0

class slide-0是超級id的孩子。 這是此時此網站的鏈接。 http://www.diegobecas.cl/art_directionvert.php 此代碼不能與它相連的IF語句。 在第一張幻燈片上,您可以下去查看其他圖像。 我需要添加IF語句,因爲我想這個垂直不僅增加至第一張幻燈片,而是其他幻燈片,需要每次都運行不同的代碼,每個單獨的幻燈片。 – user1413683

+0

確定了第一,如果標籤與投入工作 的jQuery(窗口).load(函數(){如果... 之前的一切。 現在我只是有一個快速的其他問題,我怎樣才能重新運行該上的JS代碼click事件。如果我點擊#nextslide去下一張幻燈片,我希望它通過這個代碼一次。 感謝跑! – user1413683