有没有办法在 WordPress 中关闭 jQuery noConflict 模式?
Posted
技术标签:
【中文标题】有没有办法在 WordPress 中关闭 jQuery noConflict 模式?【英文标题】:Is there a way turn off jQuery noConflict mode in WordPress? 【发布时间】:2013-07-15 06:54:25 【问题描述】:有没有办法在 WordPress 中关闭 jQuery.noConflict
?我不是说加载 jQuery 的替代版本或更改加载方法,即:
jQuery(document).ready(function( $ ) ... );
或
(function($) ... )( jQuery );
我的意思是有没有办法为与 WordPress 捆绑的 jQuery 版本关闭 noConflict
模式?
设置jQuery.noConflict(false)
是否可行?如果是这样,你会在哪里设置它?
【问题讨论】:
您可以在WordPress Development 找到更多专家。但是,请先检查etiquette for cross-posting。提示:任何知道解决方案或解决方法的人都会问你为什么要这样做。 【参考方案1】:经过一番研究,这是我能给你的最佳答案:
$ = jQuery.noConflict(true);
要回答您的其他问题,不,您不能传入 false,该属性用于控制全局变量发生的情况。您可以在此处找到文档: http://api.jquery.com/jQuery.noConflict/
另请注意,您可以按照它的建议加载 2 个不同版本的 jQuery(但不推荐)。
【讨论】:
你在哪里设置$ = jQuery.noConflict(true);
?
@AidanCurran tommaitland.net/2012/10/…
你可以在 jquery noconflict 设置之后的任何时候设置这个代码,但它也必须在你的任何 $ 前缀代码之前。如果您的所有代码都在 1 个 js 文件中...只需将其放在顶部即可。
我的特殊情况与$ = jQuery.noConflict();
一起工作,如@Jackson 评论中的链接示例所示。【参考方案2】:
如果您包含自己的 javascript 库或脚本,您可以将以下内容添加到最顶部:
var $ = jQuery;
【讨论】:
【参考方案3】:我找到了另一种使变量$
全局可用的方法。只需将以下内容放入主题的 functions.php 或插件中:
function so17687619_jquery_add_inline()
wp_add_inline_script( 'jquery-core', '$ = jQuery;' );
add_action( 'wp_enqueue_scripts', 'so17687619_jquery_add_inline' );
这将在 jQuery 的脚本标记之后立即输出 $ = jQuery;
作为内联脚本。因此,包含在之后的任何脚本都可以将 jQuery 实例用作 $
和 jQuery
。
【讨论】:
【参考方案4】:添加这个最终对我有用:
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】:你最好写在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/
【讨论】:
【参考方案6】:如果要关闭,请转到您的wp-includes/js/jquery/jquery.js
文件并从最后一行删除jQuery.noConflict()
。或者按照您的建议,只需将布尔值设置为 false。
或者你可以用从 jquery.com 下载的内容替换内容,trac 中正在进行激烈的辩论。
【讨论】:
我不想修改那个文件,因为它会被 WP 更新覆盖。感谢您提供指向 Trac 辩论的链接,我赞成将其删除,或者更好的是,将其设置为设置。 嗯,是的,它会在更新时覆盖,但除此之外,因为 trac 中的辩论说没有其他方法可以阻止它。 matt 在下面为您提供的选项将放置在您的 js 文件中。但为此,您不妨只使用包装器。我在 sublime 中设置了一个简码选项卡以添加 (function($)(jquery); 只需单击两次:D以上是关于有没有办法在 WordPress 中关闭 jQuery noConflict 模式?的主要内容,如果未能解决你的问题,请参考以下文章