2011-10-03 29 views
1

我想回港的幻灯片我的jQuery 1.6写在Drupal,您可能会或可能不知道目前被“锁定”到jQuery的1.3上班(我知道,这是延迟)。jQuery的“这个”遗产范围界定

虽然jQuery 1.3的$(this)模型没有像现代发行版那样健壮或有帮助,但我遇到了范围问题。

这里是一个的突破代码:

var $controls = $('a.controls', $frame); 

$controls.click(function() { 

    var $clicked = $(this); 

    // ... 

} 

a.controls表达结果中$controls两个对象的集合预期。但是,当jQuery的1.3 encouters的$(this)分配,它抛出以下错误:

this[0].ownerDocument is null

有谁知道它为什么这样做,我怎么能围绕其固定或工作?

+0

的Drupal 6一个非常恼人的问题不是“锁定”到版本1.3在所有...一些核心js文件的仅仅依靠1.3.2。如果你没有这些核心js文件,那么你可以把你想要的任何版本的jQuery。你也应该非常清楚,jQuery 1.6将目标移动了一点点,所以让它与任何主要系统一起工作将是一场噩梦,直到​​系统升级到使用最新版本。 – Clive

+3

加载第二个版本的jQuery并仅在幻灯片中使用它可能会更简单。当然,这是另一个必须下载的文件。 – thirtydot

+1

@Clive我不打算妥协核心;这似乎是一个糟糕的主意 - 纯粹来自维护点 - 而我的用户需要这些功能才能让管理站点的体验更加轻松,更有帮助。你能告诉我是否有可能在不损害Core的情况下添加jQuery的第二个版本? – markedup

回答

0

这可能不是在错误发生,this方面的工作在1.3事件回调在最新的版本相同。

例子:http://jsfiddle.net/hPfZH/2/

  • 你确定$frame背景下是正确的?
  • 您是否正在使用内嵌 点击$controls上的事件可以添加冲突?
-1

这可能不是回答这个问题,但可以帮助你的问题。

使用Drupal模块jquery update你可以选择在Drupal jQuery的版本。

+0

以下回复一个答案,否则你不能,它会将Drupal 6更新为1.3.2或者Drupal 7到1.5.2。 OP使用Drupal 6并已经使用jQuery 1.3的事实应该告诉你你需要知道的一切。 – Clive

+0

你可以简单地将你提问的drupal版本添加到模块目录中,而不是在那里的jQuery版本,我认为这是人们做的 – HerrSerker

0

我认为这将会完成的唯一方法是使用jquery_update模块的一小部分。您需要将sites/all/modules/jquery_update/jquery_update中的jquery.min.js(或jquery.js,如果您未使用最小化版本)文件替换为最新的jQuery版本,请更改jquery.module文件(约59行):

function jquery_update_preprocess_page(&$variables) { 
    // Only do this for pages that have JavaScript on them. 
    if (!empty($variables['scripts'])) { 

    // ADD THESE TWO LINES BEFORE THE REST OF THE CODE 
    if (preg_match('/^\/admin[\/]*.*/', $_SERVER['REQUEST_URI'])) { return; } 
    if (preg_match('/^\/batch[\/]*.*/', $_SERVER['REQUEST_URI'])) { return; } 

这将基本上告诉jquery_update只更换非管理员和非批处理的网页,这应该成为你的目的的JavaScript。根据您的需要,您可能需要添加其他路径以添加到该检查中。

我没有测试过这个,但理论上它可以工作,不幸的是,我不能评论AHAH(Drupal在AJAX框架中的蹩脚尝试)是否可以在非管理页面上使用jQuery的更新版本。

希望你得到这个整理是:-)

+0

感谢您的提示,但它似乎并没有为我工作。我遵循所有的指示(包括如上修改[jquery_update.module]),但现在我得到了来自jQuery 1.6.4的“p,a,c,k,e,r”错误...所以我不'我想我可以做到这一点。欣赏你的帮助! – markedup

+0

这是一个耻辱,我认为其中一个主要问题是,在jQuery 1.6中发生了很多变化......如果你可以放弃使用1.5.2,它可能会起作用,但它确实是个好运气! – Clive

+1

除了最后的评论(不能让这个人因为某种原因而离开!),Drupal.org上的[这篇文章](http://drupal.org/node/1067290)有人声称他们已经得到了jQuery 1.5.1与Drupal 6一起使用类似于上面答案中提到的方法......也许这会帮助你分类吗? – Clive