Javascript 如何在jquery中对未命名函数调用()函数?
假设我有按钮Javascript 如何在jquery中对未命名函数调用()函数?,javascript,jquery,function,Javascript,Jquery,Function,假设我有按钮#单击 假设我按如下方式绑定on click事件: $('#click').click(function(){ alert('own you'+'whatever'+$(this).attr('href')); }); 但是我想这个引用一些其他元素,比如说#ahref 如果它是一个命名函数,我只需按名称引用它: foo.call('#ahref'); 如果函数被内联调用并且没有名称,我如何使用.call()?也许我遗漏了什么,但是是什么阻止了您直接访问另一个元素呢 $('#
#单击
假设我按如下方式绑定on click事件:
$('#click').click(function(){
alert('own you'+'whatever'+$(this).attr('href'));
});
但是我想这个
引用一些其他元素,比如说#ahref
如果它是一个命名函数,我只需按名称引用它:
foo.call('#ahref');
如果函数被内联调用并且没有名称,我如何使用.call()
?也许我遗漏了什么,但是是什么阻止了您直接访问另一个元素呢
$('#click').click(function(){
alert('own you'+'whatever' + $('#ahref').attr('href'));
});
也许我遗漏了什么,但是是什么阻止你直接访问其他元素呢
$('#click').click(function(){
alert('own you'+'whatever' + $('#ahref').attr('href'));
});
不能强制jQuery调用函数时使用这个值,而不是jQuery想要的值。也就是说,您可以通过使用.bind()
,向jQuery传递一个函数,该函数使用预先确定的this
调用您的函数:
函数原型上的.bind()
方法返回一个函数,该函数使用作为this传递的对象调用原始函数(匿名事件处理程序)。它在较新的浏览器中,并且有一个
编辑-或者查看@dfsq的答案,其中涉及jQuery本身的类似的$.proxy()
函数。您不能强制jQuery使用这个值调用函数,而不是jQuery想要的值。也就是说,您可以通过使用.bind()
,向jQuery传递一个函数,该函数使用预先确定的this
调用您的函数:
函数原型上的.bind()
方法返回一个函数,该函数使用作为this传递的对象调用原始函数(匿名事件处理程序)。它在较新的浏览器中,并且有一个
编辑-或者查看@dfsq的答案,其中涉及jQuery本身的类似$.proxy()
函数。不能100%确定您的目标,但您可以像这样绑定上下文:
$('#click').click(function(){
alert('own you'+'whatever'+this.attr('href'));
}.bind($('#ahref')));
不是100%确定你在追求什么,但你可以像这样绑定上下文:
$('#click').click(function(){
alert('own you'+'whatever'+this.attr('href'));
}.bind($('#ahref')));
您可以使用函数更改上下文:
$('#click').click($.proxy(function() {
alert('own you'+'whatever'+$(this).attr('href'));
}, $('#ahref')));
您可以使用函数更改上下文:
$('#click').click($.proxy(function() {
alert('own you'+'whatever'+$(this).attr('href'));
}, $('#ahref')));
匿名函数有问题:)如果你知道如何使用命名函数,为什么不使用一个呢?匿名函数有问题:)如果你知道如何使用命名函数,为什么不使用一个呢?嗯,这两个解决方案都有效!谢谢你的回答。但我就是搞不懂,到底是什么让这个.bind()
方法起作用?@Anonymous我忘了在MDN上放一个到垫片的链接,我要补充一下。它只返回一个使用.call
的函数-请注意,由于.bind()
是作为函数对象的方法调用的,因此在.bind()
中,此
将是对函数本身的引用。换句话说,当你像那样调用.bind()
时,它会使函数实际上不是匿名的,因为这个
引用了它。呵呵,非常弯曲!谢谢分享,我在这里学到了很多:)嗯,两种解决方案都有效!谢谢你的回答。但我就是搞不懂,到底是什么让这个.bind()
方法起作用?@Anonymous我忘了在MDN上放一个到垫片的链接,我要补充一下。它只返回一个使用.call
的函数-请注意,由于.bind()
是作为函数对象的方法调用的,因此在.bind()
中,此
将是对函数本身的引用。换句话说,当你像那样调用.bind()
时,它会使函数实际上不是匿名的,因为这个
引用了它。呵呵,非常弯曲!谢谢分享,我在这里学到了很多:)谢谢,这很好用,而且只要Jquery关注,这一定是一种方式-对于内置解决方案。谢谢,这很好用,而且只要Jquery关注,它一定是一种方式-对于内置解决方案。