2011-07-08 86 views
1

试图将自定义jQuery扩展插入到Drupal 7中我遇到了脚本中“this”对象的问题。自定义jQuery扩展将无法与Drupal一起工作

我的代码被正确包装以支持没有冲突,并能在Drupal外部正常工作,但是在Drupal页面上相同的代码失败。

我将console.log(this)添加到了我的扩展的顶部,发现在drupal之外,我得到了一个正确的jQuery对象,其中有匹配的节点。在drupal中,我只获得了匹配元素。

Drupal 7拥有jQuery 1.4.4,我的代码在jQuery 1.4.2和1.6.2中运行良好。

我该怎么办?

+0

我下载了jQuery的更新模块,了解如果它是特定的jQuery版本,它仍然是与jQuery 1.5.2有相同的问题。 – Errol

+0

我还添加了console.log(jQuery('#Navigation'));看看我从中得到了什么,它也有同样的问题:它在drupal页面上运行时返回一个DOMElement而不是一个jQuery对象。 – Errol

回答

1

没有看到你的代码,很难给你一个很好的答案。我遇到了一个类似的(发声)的问题而回,并使用这种技术来包装,就Drupal的7个网站,在线JQuery的,这解决了我的问题:

(function($) { 
    $(document).ready(function(){ 

     // Insert your code here. 

    }); 
})(jQuery); 

的问题是,Drupal 7的是严格的命名空间并且不允许默认$作为函数的别名一样,你可以在Drupal 6做

+0

间接解决了我的问题......调用我的扩展的所有重要的一行都没有包含在$(document).ready调用中。 我不完全确定为什么“这个”对象有奇怪的行为,但似乎工作......但我只是需要我的代码等待页面解决。 – Errol

0

在Drupal另一种技术是包装jQuery的这里面:

jQuery(document).ready(function($) { 
    // Insert code here. 
}); 
相关问题