在setTimeout中执行jQuery成员函数而不关闭的方法
Way to execute jQuery member functions inside setTimeout without closure?
我正试图沿着以下几条线做一些事情:
setTimeout($('#element').hide,3000);
这看起来很简单,但它被"这个"问题弄得瘫痪了。我想找到一种方法,只将实际函数作为参数传递,而不将其包装在另一个函数中,例如,我不想这样做:
setTimeout(function(){$('#element').hide();},3000);
我尝试过的:
setTimeout($('#element').hide,3000);
setTimeout($('#element').hide.apply(document),3000); /* jQuery docs say that document is the default context */
setTimeout($('#element',document).hide,3000);
setTimeout($(document).find('#element').hide,3000);
setTimeout($(window).find('#element').hide,3000);
setTimeout($.proxy($('#element').hide,document),3000); /* I know this returns a function, which I don't want, but I have tried it */
setTimeout(($('#element').hide()),3000); /* functional expression */
我正在寻找解决这个问题的方法,但我不想把它包装在另一个函数中。代码行数越少越好。我知道为什么这没有按预期工作,但我如何在不把它包在盖子里的情况下修复它?
您可以通过将方法的上下文与元素本身绑定来实现这一点,以便在jquery中隐藏方法this
将指向jquery对象,而不是全局上下文。您可以使用创建绑定函数
功能.bind
跨浏览器的替代方案:
$.代理
例如:
var $elem = $('#element');
setTimeout($elem.hide.bind($elem),3000);
或
setTimeout($.proxy($elem.hide, $elem),3000);
或
setTimeout($.fn.hide.bind($elem),3000); //setTimeout($.proxy($.fn.hide, $elem),3000);
Fiddle
相关文章:
- 你能把一个匿名方法(函数)动态地变成一个命名方法吗
- 显示警报后调用方法/函数
- 使用来自 json 对象的参数动态调用方法/函数
- 创建具有动态参数排列的方法/函数
- 如何从其他 jsp 调用方法/函数以包含在另一个 jsp 的 jstree 中
- Objective-C 方法/函数调用.(来自JavaScript示例)
- 如何在android phongap应用程序中从javascript调用本机android方法(函数),而无需使用web
- 如何测试函数是否调用了特定的方法/函数
- 处理setTimeout(javascript)中的对象方法函数调用
- 简单级别,在DOM中选择元素,优化,创建方法函数
- 在不使用eval的情况下在方法函数中传递固定参数
- jQuery.html()方法函数文字参数
- animate方法函数执行意外延迟
- 对象方法javascript中的方法/函数
- Javascript私有方法:函数表达式与函数声明
- Jquery的oop重写方法函数
- 如何为数组/对象创建方法/函数
- 是否有可能发送我的对象与方法(函数)从服务器到客户端
- Javascript可以调用Django方法/函数吗
- 访问Backbone.js中的Ratchet 2.0方法/函数