Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Drupal 7 jQuery与多个js文件的行为_Javascript_Jquery_Drupal_Drupal 7_Drupal Behaviors - Fatal编程技术网

Javascript Drupal 7 jQuery与多个js文件的行为

Javascript Drupal 7 jQuery与多个js文件的行为,javascript,jquery,drupal,drupal-7,drupal-behaviors,Javascript,Jquery,Drupal,Drupal 7,Drupal Behaviors,我有一个基本的问题,但我还没有找到任何令人满意的答案。我必须承认,我并没有真正理解行为的概念。我所理解的是,它比jQuery(document.ready)更灵活,因为它可以被多次激发(例如ajax刷新)。但它并不总是像aspected那样工作,尤其是在处理多个jQuery文件时 我的具体问题是:我的drupal站点附带了多个js文件。一些附加到表单,一些通过模块中的drupal_add_js附加,一些附加到自定义块,等等。 所有js文件如下所示: (function ($) { Drupa

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

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

(function ($) {
  Drupal.behaviors.THEMENAME = {
    attach: function(context, settings){
            /* CODE */
       }
  };
}(jQuery));
除了一个js文件不在某些页面上(在大多数页面上有效,但不在节点页面上[用页面模块结构化])外,其他一切都可以工作

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


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

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

但是当我这样做的时候,我的js文件中除了一个以前不能正常工作的以外,没有一个可以正常工作。有什么解释吗?现在不再工作的文件主要通过
$block['content']=array('#attached'=>array('js'=>array('FILE.js',),),)包含在自定义块中
或通过
$Form['#attached']['js'][]=array('type'=>'file','data'=>'file.js',)以表单的形式另一个js脚本导致了错误(请参阅),感谢您的帮助。现在一切都好了!