有没有办法在WordPress中关闭jQuery.noConflict
?我不是指加载替代版本的jQuery或更改加载方法,即:
jQuery(document).ready(function( $ ) { ... });
或
(function($) { ... })( jQuery );
我的意思是有没有办法只关闭与WordPress捆绑的jQuery版本的noConflict
模式?
就像设置jQuery.noConflict(false)
工作一样?如果是这样,你会在哪里设置它?
答案 0 :(得分:12)
经过一番研究,这是我能给你的最佳答案:
$ = jQuery.noConflict(true);
要回答您的其他问题,不能传递false,该属性用于控制全局变量发生的变化。你可以在这里找到文档: http://api.jquery.com/jQuery.noConflict/
另请注意,您可以根据建议添加2个不同版本的jQuery(但不建议这样做)。
答案 1 :(得分:5)
如果您要包含自己的javascript库或脚本,可以将以下内容添加到最顶层:
var $ = jQuery;
答案 2 :(得分:3)
我找到了另一种让全局变量{
"bip":"172.30.0.1/20"
}
可用的方法。只需将以下内容放在主题的functions.php或插件中:
$
这将在jQuery的脚本标记之后立即输出function so17687619_jquery_add_inline() {
wp_add_inline_script( 'jquery-core', '$ = jQuery;' );
}
add_action( 'wp_enqueue_scripts', 'so17687619_jquery_add_inline' );
作为内联脚本。因此,在jQuery实例可用$ = jQuery;
和$
之后包含的任何脚本。
答案 3 :(得分:0)
要关闭,请转到wp-includes/js/jquery/jquery.js
文件,然后从最后一行删除jQuery.noConflict()
。或者如您所建议的那样,将布尔值设置为false。
或者你可以用jquery.com上的干净下载来替换内容,trac中正在激烈争论。
答案 4 :(得分:0)
最后添加这个对我有用:
var $ = jQuery.noConflict();
您可以在head头部分的header.php文件中添加:
<script>var $ = jQuery.noConflict();</script>
或者,如果您使用子主题,请将其添加到子主题目录中的functions.php:
function my_scripts_method() {
wp_enqueue_script(
'custom-script',
get_stylesheet_directory_uri() . '/main.js',
array( 'jquery' )
);
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );
在functions.php(在子主题目录中)的相同位置创建一个main.js文件,并在该文件中添加:
var $ = jQuery.noConflict();
答案 5 :(得分:0)
最好在 functions.php
中编写功能 wp_deregister_script 用于删除已注册的脚本。
function remove_default_jquery()
{
// if is not admin screen
if (!is_admin()) {
//this function
wp_deregister_script('jquery');
}
//wp_enqueue_scripts is WordPress fook for JavaScript
add_action('wp_enqueue_scripts', 'remove_default_jquery');
当您在WordPress中使用jQuery
您可以像往常一样使用 jQuery 。
<script type="text/javascript">
//jQuery in WordPress
jQuery(function($){
$('.carousel').carousel();
$('.count_num').counterUp({
delay: 10,
time: 1000
});
});
</script>
公共文档在这里
https://developer.wordpress.org/reference/functions/wp_deregister_script/