2011-12-29 79 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(); 
}); 

我需要添加live因爲div.slideshow img是由jQuery的產生。該函數似乎不起作用,除非div在腳本執行之前已經在HTML中。

+0

將任何新創建的元素插入到DOM後,只需調用'.vAlign'。 – 2011-12-29 21:06:57

+0

一如既往,如果使用jQuery 1.7或更高版本,請使用['.on()'](http://api.jquery.com/on/)而不是'.live()'。 – Blazemonger 2011-12-29 21:07:15

+0

您是否可以在生成img的相同jQuery代碼中將您的調用添加到vAlign()中?或者至少,在該img代碼中觸發自定義事件,然後您可以綁定到? – 2011-12-29 21:07:43

回答

2

您可以使用livequery

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

這將使它所以valign(表格)獲取您的負載和隨時隨地後選擇匹配任何元素上執行。

1

我不認爲.live.delegate.on會幫助你在這種情況下。在ajax響應成功並且圖像已經注入到DOM中之後,你可能會做的是在回調中運行$('div.slideshow img').vAlign();