假设我有 button #click
,
并假设我将点击事件绑定如下:
$('#click').click(function(){
alert('own you'+'whatever'+$(this).attr('href'));
});
但我想this
引用其他一些元素,比如说#ahref
.
如果它是一个命名函数,我会简单地按名称引用它:
foo.call('#ahref');
.call()
但是,如果该函数被称为内联并且没有名称,我该如何使用?
假设我有 button #click
,
并假设我将点击事件绑定如下:
$('#click').click(function(){
alert('own you'+'whatever'+$(this).attr('href'));
});
但我想this
引用其他一些元素,比如说#ahref
.
如果它是一个命名函数,我会简单地按名称引用它:
foo.call('#ahref');
.call()
但是,如果该函数被称为内联并且没有名称,我该如何使用?
您可以使用proxy
函数来更改上下文:
$('#click').click($.proxy(function() {
alert('own you'+'whatever'+$(this).attr('href'));
}, $('#ahref')));
您不能强制 jQuery 使用 jQuerythis
想要的值以外的任何值调用函数。也就是说,您可以向 jQuery 传递一个函数,该函数通过以下方式调用您的this
函数.bind()
:
$('#click').click(function() {
// whatever
}.bind(someObject));
Function 原型上的.bind()
方法返回一个函数,该函数使用您传递的对象调用原始函数(您的匿名事件处理程序)作为this
. 它在较新的浏览器中,在 Mozilla 文档站点上有一个 shim。
编辑- 或者查看@dfsq 的答案,涉及$.proxy()
jQuery 本身的类似功能。
也许我遗漏了一些东西,但是是什么阻止您直接访问其他元素?
$('#click').click(function(){
alert('own you'+'whatever' + $('#ahref').attr('href'));
});
不是 100% 确定你在追求什么,但你可以像这样绑定上下文:
$('#click').click(function(){
alert('own you'+'whatever'+this.attr('href'));
}.bind($('#ahref')));