【发布时间】:2014-03-18 18:51:05
【问题描述】:
出于我的目的,某些点击事件将使用 HTML 模板填充 div.slide-content 元素,该模板可能包含一个 div.video-wrapper 元素,然后我需要向其附加一个视频播放器元素,其属性由某些全局变量在加载时的状态决定。
我的困境要么是在 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();});
更新
还尝试使用click 之类的事件然后解除绑定,但这也不起作用。
【问题讨论】:
标签: javascript jquery ajax dom