0

我有一个基本问题,但我还没有找到任何令人满意的答案。我必须承认,我并没有真正理解行为的概念。我的理解是它更灵活,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 操作。

4

1 回答 1

0

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

于 2017-01-17T01:31:05.597 回答