2012-11-19 66 views
0

我有以下的腳本,但是當我移動到一個頁面,沒有#slider打破了低於它的代碼,我試圖做的是檢查,如果#slider在網頁上,否則只是返回,但它沒有工作我得到這個錯誤。 遺漏的類型錯誤:對象的翻譯:有沒有方法「slitslider」腳本停止的其他代碼(slitslider)執行

指向本節slitslider = $('#slider').slitslider({

(function ($) { 
    if ($('#slider')) { 
    var Page = (function() { 
     var $navArrows = $('#nav-arrows'), 
     $nav = $('#nav-dots > span'), 
     slitslider = $('#slider').slitslider({ 
      autoplay: true, 
      onBeforeChange: function (slide, pos) { 

      /** 
      * THIS SECTION MANAGES THE TRIANGLE COLORS EVERY TIME THE SLIDER BACKGROUND CHANGES SO DOES THE TRIANGLE. 
      */ 
      //get the colors of each slide 
      //and set it that color to the bottom-triangle. 
      var newpos = pos; 
      ++newpos; 
      var triangleColor = $('.bg-' + newpos + ' .sl-slide-inner').css('backgroundColor'); 
      $('.expertise-triangle').css('border-color', triangleColor + ' transparent transparent transparent'); 
      /** 
      * THIS SECTION HANDLES THE DOT NAVIGATIONS ON TOP OF THE TRIANGLES. 
      */ 

      $nav.removeClass('nav-dot-current'); 
      $nav.eq(pos).addClass('nav-dot-current'); 
      } 
     }), 
     init = function() { 
      initEvents(); 
     }, 
     initEvents = function() { 
      // add navigation events 
      $navArrows.children(':last').on('click', function() { 
      slitslider.next(); 
      return false; 
      }); 
      $navArrows.children(':first').on('click', function() { 
      slitslider.previous(); 
      return false; 
      }); 
      $nav.each(function (i) { 
      $(this).on('click', function (event) { 
       var $dot = $(this); 
       if (!slitslider.isActive()) { 
       $nav.removeClass('nav-dot-current'); 
       $dot.addClass('nav-dot-current'); 
       } 
       slitslider.jump(i + 1); 
       return false; 
      }); 
      }); 
     }; 
     return { 
     init: init 
     }; 
    })(); 
    Page.init(); 
    } else { 
    return; 
    } 
})(jQuery); 

回答

1

其實你可能有一個DOM元素稱爲#slider但沒有包括根據slitslider該頁面上的插件。你也需要檢查數組的長度,因爲$()總是返回一個數組而且一個空數組(如果沒有匹配的話)也是truthy。 這就是爲什麼錯誤Object [object Object](你的滑塊元件)has no method 'slitslider'(缺少slitslider功能。)

你需要檢查防止。

+2

'$('#slider')'總是真的。你需要檢查它的長度'$('#slider').length'。 –

+0

@Yury呵呵,我完全忽略了一點jQuery的返回空數組:-D TY爲捕捉;) – Christoph

+0

@Christoph謝謝你不知道它返回一個空數組和eval爲真,現在我知道了。 –