【发布时间】:2014-08-22 08:09:27
【问题描述】:
好吧!
所以我忙于在 drupal 7 页面中进行一些 javascript 开发。我们基本上有一个挂钩到 drupal 页面的 MVC。没有什么花哨。最近我开始修复旧代码,调用 jQuery.noConflict() 来获取 jQuery 的实例,因为在 drupal 7 中,jQuery 是命名空间的,当前的开发人员不知道如何解决可怕的“$ 不是函数”问题,而无需涂抹每个脚本使用自己的“别名”jquery 实例,如下所示:
$xj = jQuery.noConflict();
假设 $ 仍然全局可用,这会导致任何其他代码出现 sh!z 的空洞世界。
现在我已经清理了所有 noConflict 调用,并将所有“加载代码”包装在这个花哨的闭包中:
(function ($) {
// we can now use $ yo....
}(jQuery));
但现在,可悲的是,我因为使用 javascript 模块显示模式而受到了宇宙的惩罚。让我试着用代码sn-p解释一下:http://jsfiddle.net/yz41wr2g/
有没有人有在模块显示模式中使用命名空间 jQuery 的经验?
【问题讨论】:
-
我的第一个解决方案:jsfiddle.net/ou52v17a 唯一的问题是现有模块会被大量重写
-
另一种解决方案是说,拧这个命名空间垃圾!我要我的钱!! =P $ = jQuery.noConflict();
-
您不使用pattern recommended by Drupal的任何原因?
-
代码应该能够在没有嵌入drupal的视图中运行。所以我不能写drupal特定的模块。
标签: javascript jquery html drupal drupal-7