如何为Jquery中的新Ajax元素绑定覆盖工具?
我正在使用:如何为Jquery中的新Ajax元素绑定覆盖工具?,jquery,ajax,data-binding,binding,overlay,Jquery,Ajax,Data Binding,Binding,Overlay,我正在使用: 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 $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函数,可以动态添加上面显示的“addpart”超链接按钮,我不知道如何将这个新按钮绑定到覆盖。通常情况下,我会使用如下内容:
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')
);
$(“.overlay\u popup”).bind(“单击”,function(){…
),但这对覆盖层不起作用。有没有关于如何成功执行此操作的想法?请使用
$(“.overlay\u popup”).live(“单击”,function(){…})
将处理程序绑定到当前匹配的所有元素,也绑定到与选择器匹配的所有新元素。使用
$(“.overlay\u popup”).live(“单击”,function(){…})
将处理程序绑定到当前匹配的所有元素,也绑定到与选择器匹配的所有新元素。我有一个解决方案,很抱歉我的英语不好
这就是de解决方案:
在librarie tools.overlay-1.1.2.js中,在函数overlay()之前添加下一个代码:
然后你必须像这样调用函数
$('#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();
}
};
因此,这就是你所要做的一切,覆盖工作与新的创建元素的实时
阿泰。
萨尔瓦多·罗梅罗(Salvador Romero)我有一个解决办法,很抱歉我的英语不好 这就是de解决方案: 在librarie tools.overlay-1.1.2.js中,在函数overlay()之前添加下一个代码: 然后你必须像这样调用函数
$('#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();
}
};
因此,这就是你所要做的一切,覆盖工作与新的创建元素的实时
阿泰。
萨尔瓦多·罗梅罗(Salvador Romero)很抱歉回答晚了,请使用此代码更改函数
$.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;
};
抱歉,回答晚了,请使用此代码更改函数
$.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;
};
为什么不在单击事件中使用API.load
$(“.overlay_popup”).bind(“单击”,函数(){overlayDiv.load();})为什么不在单击事件中使用API.load
$(“.overlay_popup”).bind(“单击”,function(){overlayDiv.load();})另一个尝试动态添加链接的方法,灵感来自Csongor:
var Overlay = $(".overlay_popup").data("overlay");
$(".overlay_popup").overlay(Overlay.getConf());
另一个尝试动态添加链接的方法,灵感来自Csongor:
var Overlay = $(".overlay_popup").data("overlay");
$(".overlay_popup").overlay(Overlay.getConf());
嗯。由于某些原因,live在我的网站上根本不起作用。我最初尝试了绑定而不是绑定,但只能绑定到工作。但这不是问题。问题是覆盖不是“单击”状态。我认为上面的$(“.overlay\u popup”).overlay({})需要在单击元素之前进行设置。因此,一个问题是我不知道要将其绑定到哪个状态…另一个问题是函数是否只包含$(“.overlay\u popup”).overlay({})。我想我尝试了所有这些变体,但没有任何效果。
live
是在jquery 1.3中引入的,所以请检查您是否仍然没有使用1.2.6?好吧。出于某种原因,live在我的网站中根本不起作用。我最初尝试了绑定而不是绑定,但只能绑定到工作。但这不是问题。问题是覆盖不是一个“点击”状态。我认为上面的$(“.overlay\u popup”).overlay({})需要在点击元素之前设置。所以一个问题是我不知道要将它绑定到什么状态……另一个问题是函数是否只包含$(“.overlay\u popup”).overlay({})。我想我尝试了所有这些变体,但没有任何效果。live
是在jquery 1.3中引入的,所以请检查您是否仍然没有使用1.2.6?我已在上面用评论回复了我在上面用评论回复了