2012-05-29 119 views
91

全部, 我下载了一个预先捆绑的JS/CSS表单应用程序,我试图在Wordpress中使用它。我有以下代码:

$(document).ready(function() { 


/*----------------------------------------------------------------------*/ 
/* Parse the data from an data-attribute of DOM Elements 
/*----------------------------------------------------------------------*/ 


$.parseData = function (data, returnArray) { 
    if (/^\[(.*)\]$/.test(data)) { //array 
     data = data.substr(1, data.length - 2).split(','); 
    } 
    if (returnArray && !$.isArray(data) && data != null) { 
     data = Array(data); 
    } 
    return data; 
}; 

/*----------------------------------------------------------------------*/ 
/* Image Preloader 
/* http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript 
/*----------------------------------------------------------------------*/ 



// Arguments are image paths relative to the current page. 
$.preload = function() { 
    var cache = [], 
     args_len = arguments.length; 
    for (var i = args_len; i--;) { 
     var cacheImage = document.createElement('img'); 
     cacheImage.src = arguments[i]; 
     cache.push(cacheImage); 
    } 
}; 


/*----------------------------------------------------------------------*/ 
/* fadeInSlide by revaxarts.com 
/* Fades out a box and slide it up before it will get removed 
/*----------------------------------------------------------------------*/ 


$.fn.fadeInSlide = function (speed, callback) { 
    if ($.isFunction(speed)) callback = speed; 
    if (!speed) speed = 200; 
    if (!callback) callback = function() {}; 
    this.each(function() { 

     var $this = $(this); 
     $this.fadeTo(speed/2, 1).slideDown(speed/2, function() { 
      callback(); 
     }); 
    }); 
    return this; 
}; 


/*----------------------------------------------------------------------*/ 
/* fadeOutSlide by revaxarts.com 
/* Fades out a box and slide it up before it will get removed 
/*----------------------------------------------------------------------*/ 


$.fn.fadeOutSlide = function (speed, callback) { 
    if ($.isFunction(speed)) callback = speed; 
    if (!speed) speed = 200; 
    if (!callback) callback = function() {}; 
    this.each(function() { 

     var $this = $(this); 
     $this.fadeTo(speed/2, 0).slideUp(speed/2, function() { 
      $this.remove(); 
      callback(); 
     }); 
    }); 
    return this; 
}; 

/*----------------------------------------------------------------------*/ 
/* textFadeOut by revaxarts.com 
/* Fades out a box and slide it up before it will get removed 
/*----------------------------------------------------------------------*/ 


$.fn.textFadeOut = function (text, delay, callback) { 
    if (!text) return false; 
    if ($.isFunction(delay)) callback = delay; 
    if (!delay) delay = 2000; 
    if (!callback) callback = function() {}; 
    this.each(function() { 

     var $this = $(this); 
     $this.stop().text(text).show().delay(delay).fadeOut(1000,function(){ 
      $this.text('').show(); 
      callback(); 
     }) 
    }); 
    return this; 
}; 

/*----------------------------------------------------------------------*/ 
/* leadingZero by revaxarts.com 
/* adds a leding zero if necessary 
/*----------------------------------------------------------------------*/ 


$.leadingZero = function (value) { 
    value = parseInt(value, 10); 
    if(!isNaN(value)) { 
     (value < 10) ? value = '0' + value : value; 
    } 
    return value; 
}; 


}); 

我假设WordPress的任何冲突中造成的问题,所以我更新了最后的支架看起来像下面这样:

}, "jQuery"); 

然而,我仍然会有同样的错误。有谁知道什么会造成这个问题,以及如何解决这个问题?

在此先感谢!

回答

261

这是一个语法问题,WordPress中包含的jQuery库以“无冲突”模式加载。这是为了防止WordPress可以加载的其他JavaScript库的兼容性问题。在“无confict”模式下,$快捷方式不可用,则使用较长的jQuery的,即

jQuery(document).ready(function ($) { 

通过包括括号中的$后的函数调用,那么您可以使用代码块中的此快捷方式。

有关详情请参阅WordPress Codex

+0

我应该添加你需要在最后松开“jQuery” – RedEyedMonster

+3

你是这样一个生活的节省!经过3天的调试,我发现这是我的问题的确切解决方案。尽管WordPress正在加载jQuery文件,但我无法访问文档中提到的提示。所以这个代码的确切代码就是'jQuery(document).ready(function($){''固定好了,谢谢大家分享。 – Devner

+2

这也是Drupal中的同样的问题,谢谢 – nextgtech

33

我最喜爱的无冲突型结构:

jQuery(function($) { 
    // ... 
}); 

调用jQuery的一个函数指针是$(文件)。就绪(...)

或快捷,因为我们说,在coffeescript:

jQuery ($) -> 
    # code here 
+0

如果'$'已经是一个jQuery实例 - 是否有任何理由传递'jQuery'并再次给它赋予'$'名字? – zerkms

+2

$可能不是jQuery实例,如果它与另一个库冲突 - 不冲突模式。 – Julian

+4

这是$(document).ready()'的快捷方式,而不是'$(document).on('load')' –

-1

也许你有这样的代码了jQuery前:

var $jq=jQuery.noConflict(); 
$jq('ul.menu').lavaLamp({ 
    fx: "backout", 
    speed: 700 
}); 

,并将它们是冲突

,您可以更改$到(jQuery的)

+1

我用'var $ = jQuery.noConflict();'Mine是一个java-webapp安装程序,但是我得到了同样的错误! –

5

在WordPress的只是取代

$(function(){...}); 

jQuery(function(){...}); 
1

您可以考虑通过添加类似以下内容的主题functions.php文件,以取代谷歌图书馆WordPress默认jQuery脚本:从这里取

function modify_jquery() { 
    if (!is_admin()) { 
     wp_deregister_script('jquery'); 
     wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js', false, '1.10.2'); 
     wp_enqueue_script('jquery'); 
    } 
} 
add_action('init', 'modify_jquery'); 

代码:http://www.wpbeginner.com/wp-themes/replace-default-wordpress-jquery-script-with-google-library/

+0

最好的解决方案如果你使用外部的“外部”JQuery插件WP 缺点: - 可以 - 与一些WordPress插件冲突 - 没有任何注意到我身边 – RunsnbunsN

相关问题