我有这些代码:
$(function(){
$('.btn').click(function(){
$title = $(this).attr('title');
$.get('getOutput', {}, function(){
// success ajax get
// how to refer again to this function? Doing again the $('.btn').click event
setTimeout(// $('.btn').click(), 100);
});
});
})
我想重复按钮的点击事件。但我的主要问题是,你如何在setTimeout()
??
答案 0 :(得分:2)
您可以将其包装成匿名函数。
setTimeout(function() {
$('.btn').click();
}, 100);
如果你想在之前点击过的特定元素中触发事件,你需要将当前元素存储在一个变量中,因为匿名函数中的this
值会有所不同。
$('.btn').click(function() {
var $el = $(this);
// ...your code...
setTimeout(function() {
$el.click();
}, 100);
});
答案 1 :(得分:0)
你可以在匿名函数中包含超时回调,然后真正调用那里的click函数。
setTimeout(function() {
$(".btn").click();
}, 100);
答案 2 :(得分:0)
您可以将匿名函数中的this
与$.proxy()
绑定,以与IE8兼容,或者使用.bind()
代替现代浏览器。
setTimeout($.proxy(function(){
// this.click(); // if this = $(".btn")
}, this), 100);
要正确解释:
$(function(){
var btn = $('.btn');
btn.click(function(ev){
var el = $(ev.currentTarget), // same as $(this) but too many "thisses" can be confusing ^^
title = el.prop('title');
$.get('getOutput', {}, function(){
// success ajax get
// how to refer again to this function? Doing again the $('.btn').click event
setTimeout($.proxy(function(){
this.click();
}, el), 100);
});
});
});
答案 3 :(得分:0)
您可能最好再点击点击事件处理函数并在setTimeout
内再次调用它,而不是再次触发点击事件。
var handleButtonClick = function() {
$title = $(this).attr('title');
$.get('getOutput', {}, function() {
// success ajax get
setTimeout(handleButtonClick , 100);
});
};
$(function() {
$('.btn').click(handleButtonClick);
});