2011-12-29 16 views
2

.liveを次の関数に追加するにはどうすればよいですか?ライブにjquery関数を追加する

$(document).ready(function(){ 
$.fn.vAlign = function() { 
    return this.each(function(i){ 
     var ah = $(this).height(); 
     var mh = (368 - ah)/2; 
    $(this).css('margin-top', mh); 
    }); 
}; 
$('div.slideshow img').vAlign(); 
}); 

私はdiv.slideshow imgは、jQueryのによって生成されているためliveを追加する必要があります。この関数は、スクリプトが実行される前にHTML内にdivが存在していないと機能しません。

+0

新しく作成された要素をDOMに挿入した後に '.vAlign'を呼び出すだけです。 –

+0

jQuery 1.7以上を使用する場合、常に '.live()'の代わりに['.on()'](http://api.jquery.com/on/)を使用してください。 – Blazemonger

+0

imgを生成するのと同じjQueryコードでvAlign()への呼び出しを追加できますか?または、少なくとも、そのimg生成コード内のカスタムイベントをトリガーしてからバインドすることはできますか? –

答えて

2

あなたは、これはそれがとてもVALIGN(ようになりますlivequery

$('div.slideshow img').livequery(function(){ $(this).vAlign(); }); 

を使用することができます)負荷に、いつでも後に、あなたの選択に一致するすべての要素で実行されます。

1

私はこの場合、.live,.delegateまたは.onとお考えにならないと思います。おそらくできることは、ajaxの応答が成功し、画像がDOMに注入された後にコールバックに$('div.slideshow img').vAlign();を実行することです。

関連する問題