jQuery 无冲突

标签 jquery

在这个简单的例子中:

var myFunction = function(obj) {
    console.log($(obj));
}

我正在使用 $.如果我使用:

jQuery.noConflict();
var myObj = {X:1};
myFunction(myObj);

那么 $ 就不再有效了。

但是如果我将 myFunction 包裹在里面

jQuery(function($) {
var myFunction = function(obj) {
    console.log($(obj));
}
});

然后就找不到了。 myFunction 位于一个单独的脚本中,因此我无法将所有内容包装在一个巨大的 jQuery(function($) {} 中。

最佳答案

试试这个:

( function($) {
  window.myFunction = function(obj) {
    console.log($(obj));
  }
})(jQuery);

单独的文件:

myFunction({X:1});

不同之处在于,您的代码会立即执行,而不是在 dom 准备好之后执行,并且您将函数放置在全局上下文(窗口)中。因此它将在任何地方都可用。

我不知道你在做什么,但在这种情况下,你可能会发现 JQuery 插件更适合你:

( function($) {
  $.fn.myFunction = function(obj) {
    console.log(this);
  }
})(jQuery);

单独的文件:

jQuery({X:1}).myFunction();

当然,$( {X:1} ) 可能会用 JQuery 做奇怪的事情 - 我以前从未尝试过!

关于jQuery 无冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026634/

相关文章:

javascript - $(document).on 的 jquery 问题会删除变量

javascript - 在 jQUERY 中 onclick href 后传递文本

javascript - Show Hide With Jquery 想要在显示时添加一个减号

javascript - 为什么这个 jquery 扩展不起作用?

javascript - 为什么我们应该使用 $().each 方法?

javascript - 通过它在 Jquery 中的值获取选项 HTML

javascript - HighCharts 未在 Polymer 页面上呈现

javascript - 如果包含多个特定子项,如何更改元素文本

jquery - 如何仅在某些元素上转换框阴影

javascript - 查询 :contain selector exclude some div from conditions