如何对jquery中的未命名函数执行.call()
How to .call() on the unnamed function in jquery?
假设我有按钮#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调用this
值不是jQuery所希望的值的函数。也就是说,您可以通过使用.bind()
:向jQuery传递一个函数,该函数调用具有预定this
的函数
$('#click').click(function() {
// whatever
}.bind(someObject));
Function原型上的.bind()
方法返回一个函数,该函数使用传递为this
的对象调用原始函数(匿名事件处理程序)。它在更新的浏览器中,Mozilla文档网站上有一个填充程序。
编辑—或者参见@dfsq的答案,该答案涉及jQuery本身的类似$.proxy()
函数。
也许我遗漏了什么,但是什么阻止了您直接访问另一个元素?
$('#click').click(function(){
alert('own you'+'whatever' + $('#ahref').attr('href'));
});
不能100%确定你想要什么,但你可以像这样绑定上下文:
$('#click').click(function(){
alert('own you'+'whatever'+this.attr('href'));
}.bind($('#ahref')));
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- javascript自执行函数-不同的语法
- JavaScript:只有当数组中的所有项都为true时才执行函数
- iFrame url更改时执行函数
- 为什么AngularJS在每个摘要循环上都执行函数
- 如何使用setInterval执行函数
- 当*ngFor以角度2结束时执行函数
- Ajax调用完成后如何执行函数
- 在显示引导弹出窗口之前执行函数
- 从自执行函数返回函数的Javascript性能命中率
- 在操作完成时执行函数
- jquery/js中的自执行函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 构造函数函数中的自执行函数的OO上下文/范围
- Javascript未使用=运算符执行函数
- AngularJS:如何按照预定义的顺序执行函数
- 在不使用隔离作用域的情况下执行函数的角度指令
- 如何在页面加载后执行函数是在 AngularJS 中完成的
- 完成页面加载后执行函数
- 如何在完成完全执行函数后触发循环