当前位置: 首页 > 面试题库 >

如何将fancybox绑定到动态添加的元素?

充昌勋
2023-03-14
问题内容

我使用jquery fancybox 1.3.4作为弹出表单。

但是我发现fancybox无法绑定到动态添加的元素。例如,当我向当前文档中添加html元素时。

像这样:首先我使用jquery将一个元素附加到主体,

  $(document.body).append("<a href="home/index" class="fancybox"/>");

我叫fancybox,

  $(".ajaxFancyBox").fancybox({padding: 0});

但fancybox不适用于动态添加的元素。

我不能从此元素调用fancybox吗?


问题答案:

将fancybox(v1.3.x)绑定到动态添加的元素的最简单方法是:

1:升级到jQuery v1.7.x(如果尚未安装)

2:使用jQuery APIon() + focusin事件设置脚本。

为了使它工作,你需要找到parent你的元素与元素class="ajaxFancyBox"按你上面的代码(或parentparent,因为你需要它),重视jQueryon()它,因此例如,具有这个网站

<div id="container">
 <a class="ajaxFancyBox" href="image01.jpg">open image 01</a>
 <a class="ajaxFancyBox" href="image02.jpg">open image 02</a>
</div>

.. 如上例所示,我们将使用(the)将eventon()focusinevent应用于元素,例如:id="container"``parent

$("#container").on("focusin", function(){
 $("a.ajaxFancyBox").fancybox({
  // fancybox API options here
  'padding': 0
 }); // fancybox
}); // on

您可以根据需要应用任何fancybox选项。另外,对于不同类型的内容(on()方法内部),您可能具有不同的脚本,例如:

$("#container").on("focusin", function(){
 $("a.ajaxFancyBox").fancybox({
  // fancybox API options here
  'padding': 0
 }); // fancybox
 $("a.iframeFancyBox").fancybox({
  // fancybox API options here
  'padding': 0,
  'width': 640,
  'height': 320,
  'type': 'iframe'
 }); // fancybox
}); // on

重要提示 :以上示例在Chrome上无法正常运行。该 解决方法 是将添加tabindex属性绑定到你所有的元素像的fancybox

<div id="container">
 <a tabindex="1" class="ajaxFancyBox" href="image01.jpg">open image 01</a>
 <a tabindex="1" class="ajaxFancyBox" href="image02.jpg">open image 02</a>
</div>

据我所知,它可以解决问题,并且可以在包括IE7 +在内的大多数浏览器中运行。

更新:2012年3月7日。

有人告诉我,此方法仅在将新内容添加到页面时有效,而在替换页面内容时无效。

该方法实际上适用于上述两种情况中的任何一种。只需确保将新替换内容也加载到应用该.on()方法的容器内即可。



 类似资料:
  • 问题内容: 我想将onclick事件绑定到我使用jQuery动态插入的元素 但是它从不运行绑定函数。如果您能指出此示例为何不起作用以及如何使其正常运行,我将不胜感激: 编辑:我编辑了该示例以包含方法插入到其中的两个元素。在这种情况下,将永远不会执行该调用。 问题答案: 第一个问题是,当您在具有多个元素的jQuery集合上调用append时,会为每个元素创建要添加的元素的克隆,因此丢失了附加的事件观

  • 我正在尝试使用Java中的Swing制作一个GUI,它可以执行以下操作: 当按下“添加”按钮时,会创建一个JPanel,并填满图形用户界面的整个宽度。在JPanel中,JLabels将使用FlowLayout来排列,该FlowLayout告诉特定的细节(例如名称、用户ID等)。每当随后按下添加按钮时,我都希望在前面的按钮下添加一个新的JPanel,以便JScrollPane在必要时激活其垂直滚动条

  • 问题内容: 这种情况: 用户将其zip插入输入字段,然后单击魔术按钮时,他会看到最接近其位置的商店。我称该服务很好,并以一些AJAX优点加载了该服务。一切都很好。 现在,我希望将结果显示在Fancybox中,而不是将结果插入页面上的某处。我根本无法完成这项工作。 JavaScript: 我希望Fancybox弹出并显示URL()中的标记。Fancybox已加载,但不是内容,而是一个字符串,内容为“

  • 问题内容: 我有以下代码: Angular2中 有什么方法可以将HTML添加到中吗?因为上述内容仅添加到组件HTML的末尾。 我也尝试过: 但这是行不通的,因为@ViewChild指令必须在函数之外,我再也无法控制它了 我也这样尝试过: 我不能做的事情是因为我的内容是动态的并且使用唯一的ID,并且我不能动态使用[innerHtml](它仅适用于我第一次放入它们的面板,然后其他任何更改都不能再使用i

  • 问题内容: 我刚开始使用angularJS,并努力为我要做的事情找出合适的架构。我只有一个页面应用程序,但 URL始终应该保持不变 ;我不希望用户能够导航到根以外的任何路由。在我的应用中,有一个主要的div需要承载不同的视图。访问新视图时,我希望它接管主div中的显示。以这种方式加载的视图可以被丢弃或停留在DOM中,就像隐藏在DOM中一样- 我很想知道每个视图如何工作。 我提出了一个我想做的粗略的

  • 本文向大家介绍jquery html动态添加的元素绑定事件详解,包括了jquery html动态添加的元素绑定事件详解的使用技巧和注意事项,需要的朋友参考一下 在实际开发中会遇到要给动态生成的html元素绑定触发事件的情况: 假设我们要给ul动态添加的<li>绑定click事件形成如下结果 以上这篇jquery html动态添加的元素绑定事件详解就是小编分享给大家的全部内容了,希望能给大家一个参考