2011-12-29 2 views
2

.live을 어떻게 다음 함수에 추가 할 수 있습니까? div.slideshow img가 jQuery를에 의해 생성되고 있기 때문에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가 이미 HTML에 있지 않으면 작동하지 않는 것 같습니다.

+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();을 실행하는 것입니다.