有没有办法在 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 模式?的主要内容,如果未能解决你的问题,请参考以下文章

在 Meteor 中关闭文件监视

是否可以在 WKWebView 中关闭位置权限?

在 iOS 13 中关闭 UIScrollView 指示器清理

如何在 azure 中关闭应用服务的一个实例

如何在java中关闭当前工作目录(不是完整路径)[关闭]

以编程方式在 C 中检查 NIC 在 linux 中关闭时是不是有链接