- Drupal 的行为到底是什么?
- 它为模块开发人员提供什么类型的服务层?
- 它映射到
jQuery.ready
的关系类型是什么?
最佳答案
长版:Drupal.behaviors 不仅仅是 jQuery.ready 的替代品,因为后者只运行一次(当 DOM 准备好操作时):行为可以在页面执行期间多次触发,并且每当新的 DOM 元素插入到文档中时就可以运行。
此外,模块可以覆盖或扩展现有行为(例如,如果一个模块具有在所有链接上添加弹跳效果的行为,则第二个模块可以通过不同的弹跳效果替换该行为)。
简短版本:它更加模块化,尽管文档可以改进。
<小时/>此外,从 Drupal 7 开始,使用 drupal_add_js (PHP) 或 Drupal.settings.modulename (Javascript) 定义的设置将直接作为第二个参数传递(第一个参数)其中之一是行为的上下文。
例如:
Drupal.behaviors.changeLinks = function(context, settings){
if (!settings) settings = Drupal.settings.changeLinks;
$("a", context).hover(function() {
$(this).css('color', settings.color);
});
};
如果您的一个脚本(或另一个脚本)创建了新节点,它仍然可以将行为应用于新节点,而无需知道安装了哪些其他模块:
var newNodes = $('<a href="#">Hello</a> <a href="#">World</a>').appendTo('#someDiv');
Drupal.attachBehaviors(newNodes);
关于jquery - Drupal 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3941426/