2014-01-24 42 views
0

首先我想道歉,如果我遇到这个问题已经解决了五千五百万次。不幸的是,我在这里找不到答案。另外,我对jQuery的方式非常绿色,所以请原谅我对这个主题的无知。新手有jQuery冲突问题

我使用jQuery的3个领域(不知道要使用什么术语) - 滚动功能,fancybox画廊和“回到顶部”按钮。他们中的任何一个都能很好地工作,当我尝试实现这三个时,我就失去了一个fancybox。

这里是从头部代码:

<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" /> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<link href="js/fancybox/jquery.fancybox.css" rel="stylesheet" type="text/css" media="screen" /> 
<script type="text/javascript" src="js/fancybox/jquery.fancybox.pack.js"></script> 
<script type="text/javascript"> 
$(function() { 
    function filterPath(string) { 
     return string 
      .replace(/^\//,'') 
      .replace(/(index|default).[a-zA-Z]{3,4}$/,'') 
      .replace(/\/$/,''); 
    } 
    var locationPath = filterPath(location.pathname); 
    var scrollElem = scrollableElement('html', 'body'); 
    // Any links with hash tags in them (can't do ^= because of fully qualified URL potential) 
    $('a[href*=#]').each(function() { 
     // Ensure it's a same-page link 
     var thisPath = filterPath(this.pathname) || locationPath; 
     if (locationPath == thisPath 
       && (location.hostname == this.hostname || !this.hostname) 
       && this.hash.replace(/#/,'')) { 
      // Ensure target exists 
      var $target = $(this.hash), target = this.hash; 
      if (target) { 
       // Find location of target 
       var targetOffset = $target.offset().top; 
       $(this).click(function(event) { 
        // Prevent jump-down 
        event.preventDefault(); 
        // Animate to target 
        $(scrollElem).animate({scrollTop: targetOffset}, 900, function() { 
         // Set hash in URL after animation successful 
         location.hash = target; 
        }); 
       }); 
      } 
     } 
    }); 

    // Use the first element that is "scrollable" (cross-browser fix?) 
    function scrollableElement(els) { 
     for (var i = 0, argLength = arguments.length; i <argLength; i++) { 
      var el = arguments[i], 
      $scrollElement = $(el); 
      if ($scrollElement.scrollTop()> 0) { 
       return el; 
      } else { 
       $scrollElement.scrollTop(1); 
       var isScrollable = $scrollElement.scrollTop()> 0; 
       $scrollElement.scrollTop(0); 
       if (isScrollable) { 
        return el; 
       } 
      } 
     } 
     return []; 
    } 
}); 
</script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $(window).scroll(function(){ 
     if ($(this).scrollTop() > 100) { 
      $('.scrollup').fadeIn(); 
     } else { 
      $('.scrollup').fadeOut(); 
     } 
    }); 

    $('.scrollup').click(function(){ 
     $("html, body").animate({ scrollTop: 0 }, 600); 
     return false; 
    }); 

}); 
</script> 

而且从身体标记下面:

<script type="text/javascript"> 

$(document).ready(function(){ 
    $(".fancybox").fancybox(); 
}); 
</script> 
<script type="text/javascript"> 
$(".fancybox").fancybox({ 
    nextEffect : 'fade', 
    prevEffect : 'fade', 
    padding  : 0, 
    margin  : [15, 15, 40, 15], 
    afterLoad : addLinks, 
    beforeClose : removeLinks 
}); 

function addLinks() { 
    var list = $("#links"); 

    if (!list.length) {  
     list = $('<ul id="links">'); 

     for (var i = 0; i < this.group.length; i++) { 
     $('<li data-index="' + i + '"><label></label></li>').click(function() { 
      $.fancybox.jumpto($(this).data('index'));}).appendTo(list); 
     } 

     list.appendTo('body'); 
    } 

    list.find('li').removeClass('active').eq(this.index).addClass('active'); 
} 

function removeLinks() { 
    $("#links").remove();  
} 
</script> 
+1

你在控制台中的任何错误? – SLaks

+0

你试过jQuery.noConflict()吗? –

+0

当你用这么多的代码发布问题时,它通常被认为是缩进/编码的好形式,所以它很容易阅读...... –

回答

0

太多信息,以加入了注释,所以:

  1. 使用调试控制台。使用Firefox(和Chrome),您可以打开一个JavaScript控制台,查看是否有任何错误被抛出:Read this article for Firefox Tools - 请务必查看“Web控制台”部分。
  2. 缩进你的代码。我编辑了您的问题以反映正确的缩进。这样做会更容易发现问题。
  3. 下面是将抛出一个javascript错误的代码的一部分,这将停止所有 javascript在页面上运行。

代码:

function addLinks() { 
    var list = $("#links"); 

    if (!list.length) {  
     list = $('<ul id="links">'); 

     for (var i = 0; i < this.group.length; i++) { 
     $('<li data-index="' + i + '"><label></label></li>').click(function() { 
      $.fancybox.jumpto($(this).data('index'));}).appendTo(list); 
     // Changed below to close the parenthesis for the .click function... 
     }); 

     list.appendTo('body'); 
    } 

    list.find('li').removeClass('active').eq(this.index).addClass('active'); 
} 
+0

它规定的唯一错误是这样的: 类型错误:$ target.offset(...)是未定义 http://andrealynnwhitfield.com/#contact 线43从Chrome中 – oldbroad

+0

错误: 遗漏的类型错误:无法读取属性“未定义(索引)的“顶部”:43 event.returnValue已弃用。请改用标准的event.preventDefault()。 – oldbroad

+0

@oldbroad这是由于你的代码中的这一行:'如果(目标){',应该读取'if($ target){' –