Javascript 阻止默认浏览器操作,但允许meteor中的库代码

Javascript 阻止默认浏览器操作,但允许meteor中的库代码,javascript,meteor,lightbox2,Javascript,Meteor,Lightbox2,我把啤酒厂的网站改成了meteor。在转换过程中,我在一些库代码的集成中遇到了一个bug。最初的网站使用lightbox2弹出我们设计的图形的模式 在meteor版本中,模态看起来像是即将加载,但实际上只是直接导航到模态应该显示的图像资源。单击上的“查看Brew图表”查看实际问题 对我来说,它看起来像是库代码正在工作,但由于某些原因并不能阻止默认的浏览器操作。我尝试在click事件中使用preventDefault(),但是什么都没有发生。想法?将HTML包装在{{{constant}}…{{/

我把啤酒厂的网站改成了meteor。在转换过程中,我在一些库代码的集成中遇到了一个bug。最初的网站使用lightbox2弹出我们设计的图形的模式

在meteor版本中,模态看起来像是即将加载,但实际上只是直接导航到模态应该显示的图像资源。单击上的“查看Brew图表”查看实际问题

对我来说,它看起来像是库代码正在工作,但由于某些原因并不能阻止默认的浏览器操作。我尝试在click事件中使用preventDefault(),但是什么都没有发生。想法?

将HTML包装在
{{{constant}}…{{/constant}
中,并在模板呈现函数中运行任何lightbox代码,例如

Template.pictures.rendered = function() {
   lightBoxInit();
}
我不知道lightbox函数叫什么。。。它要么是他们在文档中告诉您在pageload上运行的内容,要么是封装在源代码中的
$(document).ready()
调用中的内容。更好的是,如果有一个API调用直接在元素上运行(比如
$('img').lightbox()
$('img')。每个(函数(el){lightbox(el)})

抱歉,我对lightbox不太熟悉,但这是您需要的策略,也是您需要寻找的:)


请注意,在重新渲染时也会调用渲染函数。这对于大多数库来说都很好,但如果您注意到任何奇怪的行为,则需要添加一些逻辑以确保相关链接不会被处理两次(通过使用.data布尔值或销毁并重新创建包装器).

因此,我看到的问题是,lightbox只需要加载脚本本身和修改html属性。它扫描HTML文档中的数据lightbox属性或rel=lightbox,以确定应该对哪些内容进行lightbox。。。看起来整个过程只是一个在加载时执行的自动执行匿名函数。我想理论上我可以在渲染的元素中添加data lightbox属性,但我不明白为什么这会修复任何问题。。。我会试试看,然后告诉你