使用乘法js文件的Drupal 7 jQuery行为

时间:2017-01-16 22:42:50

标签: javascript jquery drupal drupal-7 drupal-behaviors

我有一个基本问题,但我还没有找到任何令人满意的答案。我必须承认,我并没有真正理解行为的概念。我理解的是它更灵活jQuery(document).ready因为它可以被多次激发(例如对于ajax刷新)。但它并不总是如此,尤其是使用多个jQuery文件。

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

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

除了某个页面上没有一个js文件之外,所有内容都有效(大多数情况下它都有效,但在节点页面上没有[用页面模块构建])。

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

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

1 个答案:

答案 0 :(得分:0)

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