Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为Jquery中的新Ajax元素绑定覆盖工具?_Jquery_Ajax_Data Binding_Binding_Overlay - Fatal编程技术网

如何为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?我已在上面用评论回复了我在上面用评论回复了