Drupal 7和jQuery —美元符号


18

如果我不打算使用除jQuery之外的任何JS库,是否有任何理由需要Drupal调用jQuery.noConflict()来删除$作为jQuery的别名?

假设不需要删除$别名,有没有一种方法可以使我普遍获得它而不必总是将jQuery代码包装在(function($){...})中?

Answers:


11

我想出的解决方案是这样的:

在我包含在自定义主题中的第一个JS文件的顶部,我只需输入以下行:

$ = jQuery;

完成:)


大声笑,谢谢!我试图弄清楚为什么定义了jQuery,但$没有定义。我们应该将该代码段制作为一个模块:D
CamelBlues 2013年

做到这一点var $ = jQuery;
commonpike 2014年

6

不,你不能(嗯,你可能可以,但你不应该)。

也许在某个时候,您的模块将在另一个站点上的另一个项目中使用,然后该站点将使用另一个JS库(请记住,您编写的每个drupal模块都会自动使用GPL,并且您的客户端可以按他们想要的任何方式使用它)。

将这两行添加到每个js文件并不复杂:)


我同意; 为了兼容起见,最好不要在Drupal中将$用作jQuery的别名,而始终将jQuery使用jQuery包装JavaScript代码(function($){…})
kiamlaluno

到那时,简单地查找并替换以将所有$转换为模块中的jQuery并不困难。
maxedison 2011年

@maxedison当您将PHP与JavaScript混合使用时会发生什么?在JavaScript操纵的文本字符串中使用美元符号?

1
您完全忽略了提问者“假设”的问题。这是一个有效的问题,也是一个障碍,尤其是在嵌入第3方插件时-您需要编辑所有这些文件以使它们在没有$的情况下也能正常工作,并且每次更新都需要这样做。查找和替换对于更复杂的插件也不起作用,因为它们可能需要某些东西才能成为全局范围。需要修复TBH。
红色

我试图在互联网上创造一个短语:“每次使用$(),上帝​​都会杀死一只小猫。” 请-想想小猫。
aendrew

0

如果您倾向于将模块用于此类问题,那么这也可能是一种解决方案。

jQuery美元

该模块允许开发人员使用$来访问jQuery库,而不必显式调用jQuery或在Drupal 7中使用特殊的闭包。所有您需要做的就是启用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.