我们假设我有按钮#click
,
假设我按如下方式绑定点击事件:
$('#click').click(function(){
alert('own you'+'whatever'+$(this).attr('href'));
});
但我希望this
引用其他一些元素,让我们说#ahref
。
如果它是一个命名函数,我只想按名称引用它:
foo.call('#ahref');
如果函数是内联调用而没有名字,我怎么能使用.call()
?
答案 0 :(得分:4)
您可以使用proxy
功能更改上下文:
$('#click').click($.proxy(function() {
alert('own you'+'whatever'+$(this).attr('href'));
}, $('#ahref')));
答案 1 :(得分:2)
你不能强制jQuery使用除{jQuery'之外的任何其他值的this
值来调用该函数。也就是说,您可以使用this
向jQuery传递一个函数,该函数使用您预定的.bind()
调用您的函数:
$('#click').click(function() {
// whatever
}.bind(someObject));
Function原型上的.bind()
方法返回一个函数,该函数使用您传递的对象this
调用原始函数(您的匿名事件处理程序)。它在较新的浏览器中,并且有一个shim at the Mozilla documentation site.
编辑 - 或者看看@dfsq的回答涉及jQuery本身的类似$.proxy()
函数。
答案 2 :(得分:1)
也许我错过了什么,但是什么阻止你直接访问其他元素?
$('#click').click(function(){
alert('own you'+'whatever' + $('#ahref').attr('href'));
});
答案 3 :(得分:0)
不是100%肯定你所追求的是什么,但你可以像这样绑定上下文:
$('#click').click(function(){
alert('own you'+'whatever'+this.attr('href'));
}.bind($('#ahref')));