Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jquery中对未命名函数调用()函数?_Javascript_Jquery_Function - Fatal编程技术网

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关注,它一定是一种方式-对于内置解决方案。