我想动态地(在循环中)将函数绑定到几个div的.click()
事件。然后,单击功能应隐藏单击的div。我尝试它的方式,我失去了对div的引用,并且“这个”。也不适合我。
这里是我要绑定的函数:
function do_hide() {
is_anim = true;
$(this).animate({
opacity: 0.25,
height: 'toggle',
width: 'toggle'
}, 5000, function() {
is_anim = false;
this.hide();
});
}
这是任何帮助。
编辑:在ghayes的帮助下解决方案
在这里调用do_hide():
for (var i = 0; i < n; i++)
{
p[i] = $("#btn"+(i+1));
p[i].click(function() {
do_hide.call(this);
});
}
答案 0 :(得分:4)
您可以将jquery live用于此目的。
简单地编写代码以隐藏在实时绑定的函数中,例如$(本).hide()
答案 1 :(得分:1)
调用它时,您可以绑定“do_hide”的范围。我建议使用如下模式:(工作JSFiddle)
$('.stackoverflow').click(function() {
do_hide.call(this);
});
var do_hide = function()
{
is_anim = true;
$(this).animate({
opacity: 0.25,
height: 'toggle',
width: 'toggle'
}, 5000,
function() {
is_anim = false;
this.hide();
});
};
希望这有帮助!
答案 2 :(得分:1)
Jatin拥有您正在寻找的解决方案。
您是仅将click事件绑定一次,还是每次创建新div?
在任何情况下,如果使用.live方法进行绑定,它将在创建元素时绑定事件。
在页面的任何位置添加它都可以使其正常工作:
$('div').live('click',do_hide);
答案 3 :(得分:0)
$( 'divselector')上单击(do_hide);
这必须做到这一点。或者您的点击装订中是否还有其他代码?