合并两个“(document).ready(function()”s

时间:2012-11-30 16:12:06

标签: javascript jquery

我有两个jquery / javascript代码,但我无法合并它们。每次其中一个功能被禁用。如何合并代码。请帮助我,谢谢。

第一档:

jQuery.noConflict();
jQuery(function(){ 
 jQuery('ul.menu-primary').superfish({ 
 animation: {opacity:'show'},
autoArrows:  true,
     dropShadows: false, 
     speed: 200,
     delay: 800
     });
 });

jQuery(function(){ 
 jQuery('ul.menu-secondary').superfish({ 
 animation: {opacity:'show'},
autoArrows:  true,
     dropShadows: false, 
     speed: 200,
     delay: 800
     });
 });

//first ready function
jQuery(document).ready(function() {
 jQuery('.fp-slides').cycle({
  fx: 'scrollHorz',
  timeout: 4000,
  delay: 0,
  speed: 400,
  next: '.fp-next',
  prev: '.fp-prev',
  pager: '.fp-pager',
  continuous: 0,
  sync: 1,
  pause: 1,
  pauseOnPagerHover: 1,
  cleartype: true,
  cleartypeNoBg: true
 });
 });

第二档:

function checkCopyRight(/*string*/url){
    var copyrightLinks = $("a[href='" + url + "']");
    return copyrightLinks.length > 0;
}
// second ready function
$().ready(function(){
    if(!(checkCopyRight("http://e1.com")&&
         checkCopyRight("http://e2.com")&&
         checkCopyRight("http://e3.com"))){
        alert("...");
    }
});

我得到了“你的帖子没有太多的背景来解释代码部分;请更清楚地解释你的情景。”信息。有任何角色限制吗?

2 个答案:

答案 0 :(得分:0)

您实际上有 3 就绪功能和一个想要就绪功能。我已经重写了你的代码,因为它应该在一个准备好的调用中。试一试:

function checkCopyRight(/*string*/url){
    var copyrightLinks = jQuery("a[href='" + url + "']");
    return copyrightLinks.length > 0;
}

jQuery.noConflict();
jQuery(function() {
    jQuery('.menu-primary').superfish({ 
        animation: {opacity:'show'},
        autoArrows:  true,
        dropShadows: false, 
        speed: 200,
        delay: 800
    });

    jQuery('.menu-secondary').superfish({ 
        animation: {opacity:'show'},
        autoArrows:  true,
        dropShadows: false, 
        speed: 200,
        delay: 800
    });

    jQuery('.fp-slides').cycle({
        fx: 'scrollHorz',
        timeout: 4000,
        delay: 0,
        speed: 400,
        next: '.fp-next',
        prev: '.fp-prev',
        pager: '.fp-pager',
        continuous: 0,
        sync: 1,
        pause: 1,
        pauseOnPagerHover: 1,
        cleartype: true,
        cleartypeNoBg: true
    });

    if(!(checkCopyRight("http://e1.com") && checkCopyRight("http://e2.com") && checkCopyRight("http://e3.com"))) {
        alert("...");
    }
})
  • $()。ready(处理程序)(不建议这样做)[1]

另外,请记住,除非您使用其他JavaScript库(如MooTools或Prototype),否则您真的不需要noConflict。像Superfish这样的插件并不是没有冲突的理由。如果没有冲突,您可以使用$作为jQuery的简写,而不是不断重写jQuery。

$(document).ready与JavaScript的.load函数相同,从jQuery 1.0开始,您可以使用简写版jQuery(function() { /* do work */ })$(function() { /* do work */ })

了解更多信息:

答案 1 :(得分:-1)

jQuery(document).ready(function() {
   jQuery('.fp-slides').cycle({
      fx: 'scrollHorz',
      timeout: 4000,
      delay: 0,
      speed: 400,
      next: '.fp-next',
      prev: '.fp-prev',
      pager: '.fp-pager',
      continuous: 0,
      sync: 1,
      pause: 1,
      pauseOnPagerHover: 1,
      cleartype: true,
      cleartypeNoBg: true
   });

   if(!(checkCopyRight("http://e1.com")&&
      checkCopyRight("http://e2.com")&&
      checkCopyRight("http://e3.com"))){
      alert("...");
   }
});

您需要先导入第二个文件,因为第一个文件在第二个文件中使用了一个函数。