如何将bind()传递(到on())转换为delegate() - 就像在jQuery 1.7.1代码中一样?

时间:2012-07-11 22:52:34

标签: javascript jquery jquery-selectors drupal-7 jquery-1.7

我正在尝试通过jQuery的load()更新一些Drupal 7内容,并且它没有被相关的JS代码处理。有问题的代码使用bind(),并分布在数十个Drupal核心JS文件中。

我想通过使用jQuery 1.7.1和更改

来解决这个问题
bind: function( types, data, fn ) {
    return this.on( types, null, data, fn );
},

表现为

delegate: function( selector, types, data, fn ) {
    return this.on( types, selector, data, fn );
},

您可以看到唯一缺少的是selector。我能以某种方式从标准的bind()电话中获取它吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试类似

的内容
function(types, data, fn) {
    (this.context
      ? $(this.context)
      : this ).on(types, this.selector || null, data, fn);
    return this;
}

因为每个jQuery对象都将当前的选择器和上下文元素保存为属性。

但是,您不应该通过使用.bind功能覆盖delegate来应用解决方法,它只会在您的应用程序中引入错误。更好地更改调用bind但不应该调用的代码。