Javascript 找不到jQuery工具";“覆盖”;当我多次尝试注册它时

Javascript 找不到jQuery工具";“覆盖”;当我多次尝试注册它时,javascript,jquery,jquery-plugins,overlay,jquery-tools,Javascript,Jquery,Jquery Plugins,Overlay,Jquery Tools,jQuery工具的覆盖是显示div的一个很好的webhelper。通常,我们建议在jQuery就绪函数中注册覆盖。而且在我这边效果很好 现在我想在运行中注册覆盖。我的意思是: 我动态创建一个div,用于加载我的内容 然后我使用新创建的div来注册覆盖 最后一件事是触发事件 下面是我的示例代码: <pre><code> function RegisterOverlay(divId) { $("#" + divId).overlay({ mask:

jQuery工具的覆盖是显示div的一个很好的webhelper。通常,我们建议在jQuery就绪函数中注册覆盖。而且在我这边效果很好

现在我想在运行中注册覆盖。我的意思是:

  • 我动态创建一个div,用于加载我的内容
  • 然后我使用新创建的div来注册覆盖
  • 最后一件事是触发事件
  • 下面是我的示例代码:

    <pre><code>
    
    function RegisterOverlay(divId) {
        $("#" + divId).overlay({
            mask: {
                color: '#789',
                loadSpeed: 200,
                opacity: 0.7
            },
            load: true,
            onBeforeLoad: function () {
                document.getElementById(divId).style.width = overlayConf.width;
                document.getElementById(divId).style.height = overlayConf.height;
                this.getConf().top = overlayConf.top;
                this.getConf().oneInstance = true; //overlayConf.oneInstance;
                this.getConf().closeOnClick = overlayConf.closeOnClick;
                this.getConf().closeOnEsc = overlayConf.closeOnEsc;
                this.getConf().top = overlayConf.top;
                this.getConf().effect = overlayConf.effect;
                this.getConf().fixed = overlayConf.fixed;
                this.getConf().speed = overlayConf.speed;
                this.getConf().mask.color = overlayConf.Mask.color;
                this.getConf().mask.loadSpeed = overlayConf.Mask.loadSpeed;
                this.getConf().mask.opacity = overlayConf.Mask.opacity;
                this.getConf().mask.colseOnEsc = overlayConf.Mask.colseOnEsc;
                this.getConf().mask.colseOnClick = overlayConf.Mask.colseOnClick;
                var wrap = this.getOverlay().find(".contentWrap");
                wrap.load(overlayConf.url);
            },
            onClose: function () {
                var overlayAll = document.getElementById("overlayAll");
                overlayAll.removeChild(document.getElementById(divId));
            }
        });
    }
    
     function ParentOverlay(conf, divId) {
        overlayConf = conf;
        CreateDiv(divId);//create a div based on a given id
        RegisterOverlay(divId);//
    }
    

    上面的代码托管在父页面上,因此每个子页面都可以使用一些参数调用ParentOverlay函数。对不起,我的英语很差,子页面位于iframe中。机架是否会导致以下问题

    我的问题:

    有一个非常小的页面,我有三个按钮。单击其中任何一个将触发具有不同段落的ParentOverlay

    成功加载页面后,我单击第一个按钮,一切正常,我关闭覆盖,但之后我尝试再次单击三个按钮中的一个。错误来自:
    对象不支持属性或方法“覆盖”

    当我尝试注册覆盖时会发生这种情况:

    $(“#”+divId).覆盖(…

    顺便说一句,按钮没有问题,这与我点击按钮的顺序无关

    这很简单:首先点击就可以了,然后就全吸了

    我调试了这个,我发现如果我只是硬编码三个按钮的三个div,并在jquery ready函数中注册三个覆盖。无论我点击按钮多少次,一切都没问题。但这是一个紧急的解决方案,我无法接受。我想立即实现并重用代码

    我还试图将load属性设置为false,但这毫无意义

    现在,我真的不知道该怎么做,该做什么。也许有一些特殊的设置,但我仍然不知道

    这里有谁能和我分享一些经验给我一点线索吗


    非常感谢您的帮助。

    问题已经解决。覆盖或jQuery没有问题。但是我犯了一个愚蠢的错误,我加载了两次jQuery.js,这使得jQuery的扩展功能机制失败


    然后当$(“#”+divId).overlay()时,错误出现:对象不支持属性或方法“overlay”

    btw overlayConf是一个全局变量,它是一个js对象,包含一些覆盖值。我认为这与我的isue无关。