尝试将自定义jQuery扩展绑定到Drupal 7中,我在脚本中遇到了"this"对象的问题。
我的代码被正确包装以支持无冲突,并且在drupal之外工作良好,但是相同的代码在drupal页面上失败。
我将console.log(this)添加到扩展的顶部,发现在drupal之外,我得到了一个适当的jQuery对象,其中包含匹配的节点。在drupal中,我只得到匹配的元素。
Drupal 7有jQuery 1.4.4,我的代码在jQuery 1.4.2和1.6.2中运行良好。
我该怎么办?
如果没有看到您的代码,很难给您一个很好的答案。我之前也遇到过类似的问题,我使用这种技术在Drupal 7站点上包装内联JQuery,这解决了我的问题:
(function($) {
$(document).ready(function(){
// Insert your code here.
});
})(jQuery);
问题是Drupal 7对命名空间很严格,不允许默认的$
作为函数别名,而你可以在Drupal 6中这样做。
Drupal中的另一项技术是将jQuery封装在下面:
jQuery(document).ready(function($) {
// Insert code here.
});