Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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
Javascript 克隆具有Twitter引导弹出窗口的元素会在错误的位置生成弹出窗口_Javascript_Jquery_Twitter Bootstrap_Clone_Popover - Fatal编程技术网

Javascript 克隆具有Twitter引导弹出窗口的元素会在错误的位置生成弹出窗口

Javascript 克隆具有Twitter引导弹出窗口的元素会在错误的位置生成弹出窗口,javascript,jquery,twitter-bootstrap,clone,popover,Javascript,Jquery,Twitter Bootstrap,Clone,Popover,我在使用动态创建的元素获取引导弹出窗口时遇到问题(但这是另一个问题) 因此,作为一种解决方法,由于这些popover元素的内容本身并不是动态的,所以我决定创建一系列隐藏元素,其中包含加载HTML时DOM中已经存在的popover。然后,我计划使用JQuery的clone()克隆它们,并将它们放在需要的地方 问题是,当新克隆的popover启动时,popover处于错误的位置 HTML如下所示 标签 然后,我使用如下代码在popoverbottom类上注册popover事件: $(“.popo

我在使用动态创建的元素获取引导弹出窗口时遇到问题(但这是另一个问题)

因此,作为一种解决方法,由于这些popover元素的内容本身并不是动态的,所以我决定创建一系列隐藏元素,其中包含加载HTML时DOM中已经存在的popover。然后,我计划使用JQuery的clone()克隆它们,并将它们放在需要的地方

问题是,当新克隆的popover启动时,popover处于错误的位置

HTML如下所示


标签
然后,我使用如下代码在popoverbottom类上注册popover事件:

$(“.popooverbottom”).popover({placement:'bottom',trigger:'hover',delay:{show:500,hide:100}});
然后,我使用JQuery代码克隆带有popover的元素,如下所示:

e=$('#anid').clone(true);
e、 attr('id','anewid');
然后我动态地附加()新元素,它看起来很好。如果我将鼠标悬停在它上面,会触发一个弹出框,但它会出现在浏览器窗口的左上角-在左侧半切

如果我使包含popover元素的元素可见,即删除display:none,则popover将显示在原始的、非动态创建的DOM元素上,而不是新克隆的DOM元素上

这显然是因为当popover被注册时,popover被绑定到原始元素。虽然JQuery的.clone(true)似乎复制了元素和相关事件,但原始的popover位置不会更新

有没有办法告诉popover它已被克隆,并且需要将popover附加到新元素

或者,我最好尝试在洛杉矶使用动态创建的Popover

如上所述,我确实尝试过让这种动态方法发挥作用,但出现了一些问题,即当鼠标移开时,多个弹出框会留在屏幕上而不会隐藏,但这是另一个问题


任何建议都将不胜感激。

我认为问题在于引导程序在将所有克隆的popover节点添加到DOM之前创建了popover。您需要注册新添加的弹出窗口。在附加所有克隆节点之前,不要调用$(“.popoOverbottom”).popover()。克隆(true)复制事件,但不附加函数。popover()是一个函数,不是事件。

谢谢您的回复,但我不确定我是否理解。你是说一旦我克隆了连接了popover的静态元素,我就需要重新调用popover()函数吗?如果是这样的话,我想我可能对popover的工作方式有问题。我的理解是,对于动态创建的元素(就像我克隆的元素一样),您需要在popover上使用selector:选项,这就是我遇到的popover未正确隐藏的问题。请将此作为代码的最后一行:$('.PopoOverbottom').popover(),或者在每次克隆和追加后调用它。这有意义吗?里奇(不是瑞克-道歉),这就是诀窍。我没有意识到我必须重新调用.popover()。但是正如您所说,对于其他可能会发现这个问题的人来说,似乎是因为.clone(true)复制元素而不是任何绑定函数,所以我需要重新声明函数。但老实说,如果我必须这么做,那么克隆就不是我想要的解决方案。因此,我现在将重新调查我在使用动态弹出窗口时遇到的问题。谢谢你的帮助。布莱奇,重新阅读你原来的问题。。。是的,如果您已经创建了用作弹出窗口的DOM元素,我不明白为什么需要克隆它们并附加它们。只需将隐藏的元素本身制作成弹出框,并在需要时取消隐藏它们。如果您提供了html和js,我可能会给您更具体的建议。乍一看,克隆似乎不是你想做的事情。