2011-07-21 94 views
1

我要动态地(在一个循环)功能绑定到.click()事件数的div。点击功能应该隐藏点击的div。我尝试的方式,我失去了对div的引用,而“this。”我也不适合我。动态创建js函数

这里的功能我想绑定:

function do_hide() { 
    is_anim = true; 
    $(this).animate({ 

     opacity: 0.25, 
     height: 'toggle', 
     width: 'toggle' 
    }, 5000, function() { 

     is_anim = false; 
     this.hide(); 
    }); 
} 

THX的任何帮助。

编辑:与ghayes的帮助

do_hide溶液()在这里称为:

for (var i = 0; i < n; i++) 
{  
p[i] = $("#btn"+(i+1)); 

p[i].click(function() { 
    do_hide.call(this); 
}); 
} 
+0

其中do_hide()获取调用? – deostroll

回答

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(); 
        }); 
}; 

希望这有助于!

+0

谢谢你,这帮了我很多,这样我不会松动对$(this)的引用。 – dilbert

4

您可以使用jQuery live用于此目的。

简单的把代码写在你的生活中例如结合功能隐藏$(本).hide()

0

$( 'divselector')点击(do_hide)。

这必须做到这一点。或者在你的点击绑定中有另一个代码?

1

Jatin有您正在寻找的解决方案。

是你结合的Click事件只有一次,或每次创建一个新的div?

在任何情况下,如果您使用.live方法进行绑定,则会在创建元素时绑定事件。

将您的网页上任何地方这应该使其工作:

$('div').live('click',do_hide); 

http://jsfiddle.net/E65wk/