2011-07-21 96 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/