Javascript Drupal 7 jQuery与多个js文件的行为
我有一个基本的问题,但我还没有找到任何令人满意的答案。我必须承认,我并没有真正理解行为的概念。我所理解的是,它比jQuery(document.ready)更灵活,因为它可以被多次激发(例如ajax刷新)。但它并不总是像aspected那样工作,尤其是在处理多个jQuery文件时 我的具体问题是:我的drupal站点附带了多个js文件。一些附加到表单,一些通过模块中的drupal_add_js附加,一些附加到自定义块,等等。 所有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
(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脚本导致了错误(请参阅),感谢您的帮助。现在一切都好了!