2012-01-02 58 views
2

好吧我有一个页面,使用3插件和自定义代码。与视频盒和自定义代码jQuery的冲突

  1. Fullscreenr
  2. ScrollTo
  3. VideoBox

我的自定义代码只是为了改变菜单项的CSS样式(我会后的代码藏汉)。

我的问题是,Fullscreenr和ScrollTo工作正常,但是当我想添加VideoBox的视频弹出不想工作,它只是重定向到YouTube页面。当我检查页面(浏览器),它显示了这个错误:在这条线

Uncaught TypeError: Object #<Object> has no method 'setProperty' 

this.overlay = new Element('div').setProperty('id', 'lbOverlay').injectInside(document.body); 

我一直在使用$ .noConflict()审判;现在,如果我删除了所有其他插件,那么它可以正常工作,但这对我无效,因为我需要一切工作。希望有人知道我能做些什么来解决这个问题。

<script type="text/javascript" src="js/mootools.js"></script> 
<script type="text/javascript" src="js/swfobject.js"></script> 
<script type="text/javascript" src="js/videobox.js"></script> 

<!-- IF I REMOVE FROM HERE DOWN VIDEOBOX WORKS --> 
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script> 
<script src="js/jquery.fullscreenr.js" type="text/javascript"></script> 
<script type="text/javascript"> 

    <!-- 
     // You need to specify the size of your background image here (could be done automatically by some PHP code) 
     var FullscreenrOptions = { width: 1024, height: 439, bgID: '#bgimg' }; 
     // This will activate the full screen background! 
     jQuery.fn.fullscreenr(FullscreenrOptions); 
    //--> 
</script> 
<script type='text/javascript' src='js/jquery.min.js'></script> 
<script type='text/javascript' src='js/jquery.scrollTo-min.js'></script> 
<script type='text/javascript' src='js/init.js'></script> 
<script language="javascript"> 

    function GotoSection(divid) 
    { 
     $('#realBody').scrollTo('#' + divid, 800, {duration:3000}); 
     switch(divid) 
     { 
      case "home": 
      $("#mhome").attr('class', 'selected'); 
      $("#mvids").attr('class', 'non'); 
      $("#meventos").attr('class', 'non'); 
      $("#mfotos").attr('class', 'non'); 
      $("#mcontact").attr('class', 'non');                 
      break; 

      case "vids": 
      $("#mhome").attr('class', 'non'); 
      $("#mvids").attr('class', 'selected'); 
      $("#meventos").attr('class', 'non'); 
      $("#mfotos").attr('class', 'non'); 
      $("#mcontact").attr('class', 'non');                 
      break; 

      case "eventos": 
      $("#mhome").attr('class', 'non'); 
      $("#mvids").attr('class', 'non'); 
      $("#meventos").attr('class', 'selected'); 
      $("#mfotos").attr('class', 'non'); 
      $("#mcontact").attr('class', 'non'); 
      break; 

      case "fotos": 
      $("#mhome").attr('class', 'non'); 
      $("#mvids").attr('class', 'non'); 
      $("#meventos").attr('class', 'non'); 
      $("#mfotos").attr('class', 'selected'); 
      $("#mcontact").attr('class', 'non'); 
      break; 

      case "contact": 
      $("#mhome").attr('class', 'non'); 
      $("#mvids").attr('class', 'non'); 
      $("#meventos").attr('class', 'non'); 
      $("#mfotos").attr('class', 'non'); 
      $("#mcontact").attr('class', 'selected');              
      break; 
     } 

    } 


</script> 

如果有更好的脚本我可以使用我欢迎任何和所有的建议。

回答

3

如果多个库在网页中使用相同的$这样的工作,你必须使用noConflict。

(function($){ 

//Write your jQuery code here as usual using $. 

})(jQuery); 

我们在这里定义了一个匿名函数,它将jQuery作为唯一的参数。它在上述函数中被映射为$,你的代码将按照预期工作。你可以很好地做这样的事情。

(function($){ 
    $(document).ready(function(){ 
     //Write your jQuery code here as usual using $. 
    }); 
})(jQuery); 
+0

做到了!我把它放在我的函数GotoSection(divid)的末尾,并将视频对象引用移动到该代码之后,现在它工作。谢谢! – Andres 2012-01-02 20:04:23

+1

哇像一个魅力工程。将我的jquery函数移动到您的代码中,然后放入视频框,现在它工作正常。谢谢你的男人... – 2012-10-02 09:44:32

+0

@RenjithKN谢谢:) – Jaseem 2012-10-09 07:33:33

0

,你还使用mootools的

<script type="text/javascript" src="js/mootools.js"></script> 
<script type="text/javascript" src="js/swfobject.js"></script> 
<script type="text/javascript" src="js/videobox.js"></script> 

<!-- IF I REMOVE FROM HERE DOWN VIDEOBOX WORKS --> 
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $.noConflict(); 
    // Code that uses other library's $ can follow here. 
    //from here you must use jQuery instead of $ or you could do 

    jQuery(document).ready(function($) { 
    // Code that uses jQuery's $ can follow here. 
    }); 


</script>