對於我而言,某些點擊事件將填充的HTML模板,模板可以包含div.video-wrapper
元素,而我則需要div.slide-content
元素附加一個視頻播放器元素,其屬性由其加載時某些全局變量的狀態決定。後jQuery的ajax.load(),不能追加一個元素,新加載的內容
我的困境是要麼在到達時無法將合適的偵聽器綁定到div.video-wrapper
,要麼在AJAX調用完成時觸發相應的事件(或者更糟糕的是我正在執行這兩個操作)。我可以使它與click
或hover
等事件一起工作,但我更願意使用用戶無法自行生成的事件。
// listen for a click event on the given 'slide'
$(".ajax-link").click(function() {
toc_index = parseInt($(this).attr("data-slide-number"));
fetch_slide();
});
// load the next slide's content
function fetch_slide() {
$(slide_content).load("slides/slide_" + toc_index + ".php").fadeIn();
$("div.video-wrapper").trigger('ready');
/* note that I've also tried triggering this via $(document).ajaxComplete()
as well; neither does anything unless I use events that are problematic */
}
/* this function needs to be called if #slide-content contains
an instance of div.video-wrapper */
function buildVideoElement(id, src) {
var element = ethovid.template.replace("%%VIDEO_ID%%", id);
element = element.replace("%%VIDEO_SOURCE%%", src);
return $("div.video-wrapper").append(element);
/* my (failing) attempt to bind a listener to .video-wrapper elements
note that though I'm trying to use the 'ready' event, really I've just chosen an
event that the user can't trigger themselves and that matches the trigger in
fetch_slide() above.
*/
$(document).on("ready", "div.video-wrapper", function() { buildVideoElement();});
UPDATE
還試圖使用一個事件像click
,然後解除綁定,但是這並不工作,無論是。
先生,你是一個巫師。非常感謝。 – Jonline
(謝謝你不告訴我'id'和'src'不包括在上面,你很對,他們來自其他地方的應用程序。乾杯!) – Jonline
謝謝你的帖子和答案:-) – siva