0

我在用着:

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(){...但这对覆盖不起作用。关于如何成功做到这一点的任何想法?

4

5 回答 5

2

受 Csongor 启发,尝试动态添加链接的另一件事:

var Overlay = $(".overlay_popup").data("overlay");
$(".overlay_popup").overlay(Overlay.getConf());
于 2011-01-13T15:59:55.873 回答
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("点击", function(){overlayDiv.load();})

于 2010-02-01T20:08:24.703 回答
0

使用jQuery live(type, fn) 方法

$(".overlay_popup").live("click", function(){...})将您的处理程序绑定到所有当前匹配的元素,但也绑定到与您的选择器匹配的所有新元素。

于 2009-11-03T01:14:15.823 回答
0

我有一个解决方案,对不起我的英语不好......

这是解决方案:

在库 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();
   }
  };

所以这就是你所要做的一切,你可以实时使用新的创建元素覆盖。

阿特。萨尔瓦多·罗梅罗

于 2009-11-23T16:18:09.557 回答
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;
};
于 2010-01-18T22:28:57.810 回答