Drupal 7 jQuery 多个 js 文件的行为

Drupal 7 jQuery behaviours with multiply js files

我有一个基本问题,但我还没有找到满意的答案。我必须承认,我并没有真正理解行为的概念。我的理解是它比 jQuery(document).ready 更灵活,因为它可以多次触发(例如 ajax 刷新)。但它并不总是按方面工作,尤其是在处理多个 jQuery 文件时。

我的具体问题:我有多个 js 文件附加到我的 drupal 站点。一些附加到表单,一些通过模块中的 drupal_add_js 附加,一些附加到自定义块等。 所有 js 文件如下所示:

(function ($) {
  Drupal.behaviors.THEMENAME = {
    attach: function(context, settings){
            /* CODE */
       }
  };
}(jQuery));

除了一个 js 文件在某些​​页面上不起作用外,一切正常(在大多数情况下都有效,但在节点页面上无效 [使用页面模块构建])。

但我不太确定如何命名这些行为。他们应该有相同的名字,还是不同的?当我更改名称 (THEMENAME) 并提供唯一名称(例如相应的模块)时,大多数 js 不再工作,但只在某些页面上工作的那个现在在每个页面上工作。

我应该怎么命名呢?不同的 js 没有依赖关系,它们大多是简单的切换、显示、隐藏和 css 操作。

行为是 JavaScript 对象。如果您将所有行为命名为相同的名称,您将一次又一次地覆盖同一个对象,并且只会执行最后加载的行为。您需要为每个不同的行为找到一个唯一的名称。名字可以是任何东西。我的建议是在它们前面加上您的主题或模块名称,然后使用最能描述它们功能的短名称。