【发布时间】:2024-01-21 21:28:01
【问题描述】:
我正在尝试将我在 jQuery 1.6 中编写的幻灯片反向移植到 Drupal 中,您可能知道也可能不知道目前已“锁定”到 jQuery 1.3(我知道,它已被延迟)。
不过,我在范围方面遇到了问题,因为 jQuery 1.3 的 $(this) 模型不像在更现代的版本中那样健壮或有用。
这是破坏的代码:
var $controls = $('a.controls', $frame);
$controls.click( function() {
var $clicked = $(this);
// ...
}
a.controls 表达式按预期生成$controls 内的两个对象的集合。但是当 jQuery 1.3 遇到 $(this) 赋值时,它会抛出以下错误:
this[0].ownerDocument 为空
有谁知道它为什么会这样,以及我该如何解决或解决它?
【问题讨论】:
-
Drupal 6 根本没有“锁定”到 1.3 版……一些核心 js 文件只依赖于 1.3.2。如果您可以不使用这些核心 js 文件,那么您可以将任何版本的 jQuery 放入您想要的。您还应该非常清楚,jQuery 1.6 移动了一些目标,因此在该系统升级到使用最新版本之前,让它与任何主要系统一起工作将是一场噩梦。
-
加载第二个版本的 jQuery 并仅在幻灯片中使用它可能更简单。当然,这是另一个必须下载的文件。
-
@Clive 我不准备妥协 Core;这似乎是个坏主意 - 纯粹从维护的角度来看 - 我的用户需要这些功能来使管理网站的体验更轻松、更有帮助。你能告诉我是否可以在不影响核心的情况下添加第二个 jQuery 版本?
-
奇怪的是,这个问题在我的脑海中盘旋了一天左右,我认为有一个解决方案,我会在下面发布一个答案
标签: jquery drupal scope this legacy