【问题标题】:What is secure way to use jquery no conflict什么是使用jquery的安全方法没有冲突
【发布时间】:2014-01-27 14:04:36
【问题描述】:

我正在开发wordpress插件,插件需要jquery,问题是当我尝试使用 jQuery 关键字如果 wordpress 没有使用冲突,它就可以工作,如果主题构建器没有添加任何冲突我的意思是在旧的 wordpress 主题中,他们使用了像 $ 这样的关键字

问题:

1.如何检测jquery没有触发冲突?

2. 或者需要一个适用于 no.Conflict jQuery$ 的 dom 就绪功能

谢谢。

【问题讨论】:

  • 据我所知,不应该有$ 指 jQuery 而jQuery 没有的时候,即使您使用的是无冲突模式。没有冲突的重点是处理所有尝试使用$快捷方式的不同框架。
  • 感谢 Anthony 的快速回复,我想在旧的 wordpress 主题上运行 wp-plugin,其中包括旧版本的 jquery,只想要一个可以在任何条件下运行的代码:有或没有冲突。如果我有一些代码示例会很棒:)
  • 添加了一个答案,涵盖了如何让$ 引用 jQuery 的实例。关键是jQuery always 指的是(一个版本的)jQuery,如果它已经加载到页面上的话。如果 jQuery 未定义,那么您根本没有加载 jQuery。
  • 谢谢安东尼,节省我的时间:)

标签: jquery wordpress


【解决方案1】:

jQuery 的无冲突模式旨在解决都想使用$ 快捷方式的多个框架(或jQuery 实例)之间的争议。无论jQuery.noConflict() 是否被调用,都不应该出现这样的情况,其中$ 指的是jQuery,jQuery 也不是指jQuery(一个版本)。

如果你想用$来引用jQuery,不管没有冲突状态,那么你可以这样做:

(function($) {
    // code that uses jQuery here
})(jQuery);

这是一个立即调用的函数表达式,它有一个名为$ 的参数,它被传递给jQuery 变量。它创建了一个闭包,您可以在其中保证 $ 引用 jQuery,如果 jQuery 插件希望能够使用 $ 快捷方式,这是编写 jQuery 插件的标准方式。

如果您总是使用 DOM 就绪处理程序,并且所有使用 jQuery 的代码都在传递给它的函数内部,那么它具有类似的机制来执行此操作,因为 DOM 就绪处理程序总是将 jQuery 的实例传递给那个函数:

jQuery(function($) {
    // $ definitely refers to jQuery here
});

// $ may or may not refer to jQuery here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-03
    • 2012-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2018-03-13
    • 1970-01-01
    相关资源
    最近更新 更多