我正在使用:
echo $javascript->link('tools.overlay-1.0.4', false);
初始化为:
$(".overlay_popup").overlay({
expose: '#000000',
close: '.close_overlay',
finish: {
top: 'center',
left: 'center',
absolute: false
}
});
我像这样调用叠加弹出框:
echo $html->link(
"add part",
array('controller'=>'garage_parts',
'action'=>'addfrompartlist',
$gcar['GarageCar']['id'],
$gcar['GarageCar']['car_id']),
array('class'=>'js-ajax overlay_popup',
'id'=>'add_part_overlay',
'rel'=>'.overlay_container')
);
这一切都很好用,但我有一个动态添加上面显示的“添加部分”超链接按钮的ajax函数,我不知道如何将这个新按钮绑定到覆盖图。通常,我会使用这样的东西:
$(".overlay_popup").bind("click", function(){...
但这不适用于叠加层。关于如何成功做到这一点的任何想法?
答案 0 :(得分:2)
尝试动态添加链接的另一件事,受Csongor启发:
var Overlay = $(".overlay_popup").data("overlay");
$(".overlay_popup").overlay(Overlay.getConf());
答案 1 :(得分:1)
为什么不在点击事件中使用API.load?
http://flowplayer.org/tools/overlay.html
var overlayDiv = $(".overlay_popup").overlay({expose: '#000000', close: '.close_overlay', finish: { top: 'center', left: 'center', absolute: false }});
$(“。overlay_popup”)。bind(“click”,function(){overlayDiv.load();})
答案 2 :(得分:0)
使用jQuery live( type, fn ) method。
$(".overlay_popup").live("click", function(){...})
将您的处理程序绑定到所有当前匹配的元素,但也绑定到与您的选择器匹配的所有新元素。
答案 3 :(得分:0)
我有一个解决方案,抱歉我的英语不好......
这是解决方案:
在librarie tools.overlay-1.1.2.js中的在函数overlay()之前添加下一个代码:
$.fn.addObjectToOverlay = function(element, confOverlay){
el = new Overlay($(element), confOverlay);
instances.push(el);
$(this).data("overlay", el);
};
// jQuery plugin initialization
$.fn.overlay = function(conf) {
然后你必须像这样调用这个函数
$('#avisoFav').remove();
$video = $(respuesta);
$video.css("display", "none");
$("#contenidoFav").append($video);
$.each($video.find('.linkRMTP'), function (index, obj){
$video.addObjectToOverlay(obj, confOverlay);
});
$video.slideDown('fast');
变量“confOverlay”是我的叠加层的配置,例如:
confOverlay = {
effect: 'drop',
expose: '#789',
top:25,
closeOnClick : false,
fastInSpeed : 'fast',
onBeforeLoad: function(){
idVideo = $(this.getTrigger()).attr("idVideo");
idiomaActual = $(this.getTrigger()).attr("idiomaActual");
onBeforeLoad(idVideo, idiomaActual);
},
onLoad: function(){
$("#contenedorVideo > *").remove();
url= $(this.getTrigger()).attr('link');
onLoaded(url);
},
onClose: function (){
$("#contenedorVideo > *").remove();
}
};
因此,您需要为叠加层执行的所有操作都可以实时处理新的创建元素。
ATTE。 萨尔瓦多罗梅罗
答案 4 :(得分:0)
对于迟到的答案,很抱歉使用此代码更改功能
$.fn.addObjectToOverlay = function(element, confOverlay){
if ($.isFunction(confOverlay)) {
conf = {onBeforeLoad: confOverlay};
}
var globals = $.extend({}, $.tools.overlay.conf);
confOverlay = $.extend(true, globals, confOverlay);
el = new Overlay($(element), confOverlay);
instances.push(el);
$(this).data("overlay", el);
return confOverlay.api ? el: this;
};