[英]Adding jQuery to Drupal module
我决定使用将文件包含在我的信息文件中的方法。 这是我写的:
scripts[] = https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js
scripts[] = screenshot.js
scripts[] = html2canvas-master/dist/html2canvas.js
我在screenshot.js中混合了javascript和jquery。 javascript部分工作正常,但是像$(“#btn”)。html(“ testing”)这样简单的内容却无法正常工作。 那么jQuery是否在此处错误添加?
这是将javascript文件添加到站点上每个页面的一种方法(启用该模块时)。
但是,jQuery已与Drupal捆绑在一起(在无冲突模式下 )。 那可能是您的问题。 如果您需要更新到jQuery 2.x,则可能要使用jQuery Update模块 。 您需要此模块,因为它提供了一个兼容性层,因此一旦您更新jQuery,Drupal自己的JavaScript仍然可以使用。 否则,您将遇到一些兼容性问题。
Drupal 7包含标准安装的jQuery。 它可能比您需要的版本稍旧。
找出jQuery Drupal的版本正在加载
关闭js聚合后(从管理菜单中选择“配置”>“开发”>“性能”),加载页面并使用浏览器工具检查代码。 您应该在<head>
看到随页面加载的所有javascript。 如果jQuery版本不包含所需的功能,请添加模块jQuery Update 。 配置此模块将允许您选择所需的jQuery版本。
在您的Drupal网站上使用jQuery
创建自定义javascript时,您可以利用Drupal js行为,这在“了解Drupal中的JavaScript行为”一文中有详细介绍。 或者,您可以使用旧的$( document ).ready()
。
如何在行为和准备文档之间进行选择
如果您的页面是您将要使用的行为:
$(document).ready()
事件触发后加载AJAX内容$(document).ready()
需要对该新内容采取行动。 行为将遍历该新内容,而只是遍历新内容,因此您不必疯狂地增加事件侦听器。 但是$(document).ready()
仍然可以正常工作。 它是命名空间,并且为了使用熟悉的$('。my-target')语法,您需要将自定义jQuery包装在包装器中,如下所示:
(function ($) {
// All your code here
$(document).ready(function(){
$('.my-paragraph).css('border','1px solid lime');
console.log('jQuery reporting for duty!');
});
}(jQuery));
查看Drupal文档以获取更多信息 。 确保语法紧凑! 在某些情况下,这些分号可能是可选的,但Drupal肯定对此有些不满。
您无需在主题信息文件中添加scripts[] = https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js
。 因为jQuery已与以下版本的Drupal安装捆绑在一起。
如果您需要其他版本的jQuery,请安装jquery_update模块。 由于与核心JavaScript不兼容,该模块解决了许多冲突。
Drupal删除了jQuery的全局$
包装。 您可以从这里查看历史和论点
包装所有代码的行为是添加自己的JavaScript代码的首选方法,而不是$(document).ready()
。
(function($) { Drupal.behaviors.yourThemeName = { attach: function(context, settings) { // enter code here // this is example $('body', context).addClass('test'); }, } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.