首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Drupal行为

Drupal行为
EN

Stack Overflow用户
提问于 2010-10-15 18:33:52
回答 7查看 42.3K关注 0票数 58
  • 到底是什么行为?
  • 为模块提供了哪种类型的服务层,映射到Drupal的关系类型是什么
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-10-15 18:54:06

长版本: Drupal.behaviors不是jQuery.ready的简单替代,因为后者只运行一次(当DOM准备好操作时):行为可以在页面执行期间触发多次,并且可以在文档中插入新的DOM元素时运行。

此外,模块可以覆盖或扩展现有行为(例如,如果一个模块具有在所有链接上添加反弹效果的行为,则第二个模块可以用不同的反弹效果替换该行为)。

简而言之:它更加模块化,尽管文档还可以改进。

此外,从Drupal7开始,使用drupal_add_js (PHP)或Drupal.settings.modulename (Javascript)定义的设置将直接作为第二个参数(第一个参数是上下文)传递给行为。

例如:

代码语言:javascript
复制
Drupal.behaviors.changeLinks = function(context, settings){
    if (!settings) settings = Drupal.settings.changeLinks;
    $("a", context).hover(function() {
        $(this).css('color', settings.color);
    });
};

如果您的一个脚本(或另一个)创建了新节点,它仍然可以将行为应用于新节点,而不必知道iinstalled还安装了哪些其他模块:

代码语言:javascript
复制
var newNodes = $('<a href="#">Hello</a> <a href="#">World</a>').appendTo('#someDiv');

Drupal.attachBehaviors(newNodes);
票数 83
EN

Stack Overflow用户

发布于 2013-09-27 00:15:31

重复功能

请注意,Drupal.behaviors架构复制了jQuery中已有的功能

此外,在撰写本文时,除了本身的之外,似乎还没有任何文档或案例研究 Drupal.behaviors ;并且Drupal内的文档(如上所述)可以从改进中获得相当大的好处。在撰写本文时,主要的详细文档似乎仅限于收费访问。

这意味着您可能会注意到性能下降、异常和与标准jQuery不一致的意外结果,这些都是Drupal.behaviors生态系统所特有的。

本机jQuery功能

与Drupal.behaviors形成对比的是,标准jQuery应用程序接口的内置功能是广泛记录的,包括内联演示和示例。此外,在jsfiddle等网站上也有大量免费的实时示例。

“请参阅”部分中的链接列举了与处理插入到文档中的新DOM元素相关的jQuery应用编程接口调用。

另请参阅

票数 7
EN

Stack Overflow用户

发布于 2016-02-28 17:26:35

除了上面提到的答案,关键的一点是您可以将数据从php传递到javascript,如下所示

使用"Drupal.settings“将值从PHP传递到Javascript

您可以使用drupal_add_js()函数通过Drupal.settings在前端轻松地将PHP中的变量提供给Javascript

代码语言:javascript
复制
<?php
  drupal_add_js(array('myModule' => array('key' => 'value')), 'setting');
?>

代码语言:javascript
复制
<?php
$element['#attached']['js'][] = array(
  'type' => 'setting',
  'data' => array('myModule' => array('key' => 'value')),
);
?>

这将在Javascript中以如下方式提供:

代码语言:javascript
复制
  if (Drupal.settings.myModule.key === 'value') {
    alert('Got it!');
  }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3941426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档