2011-12-29 2 views
2

Как добавить .live к следующему функциям?Добавить функцию live to 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

Просто вызовите '.vAlign' на любые вновь созданные элементы после их вставки в DOM. –

+0

Как всегда, используйте '' .on() '] (http://api.jquery.com/on/) вместо' .live() ', если используете jQuery 1.7 или выше. – Blazemonger

+0

Можете ли вы добавить свой вызов к vAlign() в том же коде jQuery, который генерирует img? Или, по крайней мере, вызвать пользовательское событие внутри этого кода генерации img, с которым вы могли бы привязываться? –

ответ

2

Вы можете использовать livequery

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

это сделает так VALIGN() запускается на выполнение на любом элементе, который соответствует вашему выбору на нагрузку и в любое время после.

1

Не думаю, что .live, .delegate или .on поможет вам в этом случае. Вероятно, вы можете запустить $('div.slideshow img').vAlign(); в обратном вызове после успешного ответа ajax, и изображения были введены в DOM.