动态创建js功能

时间:2011-07-21 06:10:00

标签: javascript jquery animation

我想动态地(在循环中)将函数绑定到几个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);
 });
}

4 个答案:

答案 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);

http://jsfiddle.net/E65wk/

答案 3 :(得分:0)

$( 'divselector')上单击(do_hide);

这必须做到这一点。或者您的点击装订中是否还有其他代码?