脚本停止执行其他代码(slitslider)

我有以下脚本,但是当我移动到没有#slider的页面打破它下面的代码时,我试图做的是检查#slider是否在页面上,否则只返回但它没有’工作我得到这个错误。 未捕获的TypeError:对象[object Object]没有方法’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); 

实际上你可能有一个名为#slider的dom元素,但是没有在该页面上包含相应的slitslider插件。 你还需要检查数组的长度,因为$()总是返回一个数组,一个空数组(如果没有匹配)也是真的。 这就是错误Object [object Object] (你的滑块元素) has no method 'slitslider' (缺少slitslider函数)的原因。

你需要检查if($('#slider').length && $().slitslider )来防止这种情况发生。