【发布时间】:2014-06-23 09:00:56
【问题描述】:
那里有几个类似的问题/答案,但我无法应用它们。我很绿。任何帮助表示赞赏。
我正在使用 CubePortfolio - 这是一个基于 jquery 的可过滤项目库。每个“项目”都可以选择使用 ajax 加载更详细的项目弹出页面,或者打开一个灯箱,然后单击该灯箱以查看每个项目的封面照片。
最终,我尝试将相同的灯箱功能添加到加载 ajax 的弹出页面,以便用户可以点击特定于该项目的照片。
在请求 ajax 内容之前,只需将 .cbp-lightbox 类添加到我的代码中即可。但是,一旦加载了ajax,就不再起作用了。
我很确定我明白我需要在加载 ajax 内容后重新调用(更好的术语?)JS,但灯箱功能内置于过滤器的其余 JS 代码中,响应式网格等并使用委托(.cpb-lightbox)。我迷路了,希望有人能指出我正确的方向。
我的基本页面 (projects.html) 中的工作代码 - 第一个拉入 ajax 加载的弹出窗口。第二个打开灯箱。两者都可以从原始页面工作,但一旦加载了 ajax,灯箱就不会拉出。
<!-- PROJECT 2 - Lafayette Veterans Building -->
<li class="cbp-item arch">
<div class="cbp-caption">
<div class="cbp-caption-defaultWrap">
<img src="../Metalset/cubeportfolio/img/lafayette-veterans-cover.jpg" alt="" width="100%"><!-- images pointing towards Metalset folder... will need to updated to local folder once on new server-->
</div>
<div class="cbp-caption-activeWrap">
<div class="cbp-l-caption-alignCenter">
<div class="cbp-l-caption-body">
<a href="../Metalset/cubeportfolio/ajax/lafayette-veterans.html" class="cbp-singlePage cbp-l-caption-buttonLeft">more info</a>
<a href="../Metalset/cubeportfolio/img/lafayette-veterans-big.jpg" class="cbp-lightbox cbp-l-caption-buttonRight" data-title="Jobsite name and other info">view larger</a>
</div>
</div>
</div>
</div>
<div class="cbp-l-grid-projects-title">Lafayette Veterans Building</div>
<div class="cbp-l-grid-projects-desc">Architectural Metal</div>
</li>
在我的基本页面 (projects.html) 的底部
<!-- load jquery -->
<script type="text/javascript" src="../test-platform/cubeportfolio/js/jquery.js"></script>
<!-- load cubeportfolio plugin -->
<script type="text/javascript" src="../test-platform/cubeportfolio/js/jquery.cubeportfolio.min.js"></script>
<!-- load main js -->
<script type="text/javascript" src="../test-platform/cubeportfolio/js/main.js"></script>
<script type="text/javascript">
jQuery(document).ready( function() {
jQuery('#grid-container').cubeportfolio({
// options
});
});
</script>
<script type="text/javascript">
jQuery('#grid-container').cubeportfolio({
/**
* This callback function will be trigger after the singlePage popup will be opened. (@param item = the current item clicked)
*/
singlePageCallback: function (item) {
// add content to singlePage
this.updateSinglePage('<div>My content to append to singlePage container</div>');
}
});
</script>
我的 ajax 加载页面中的代码 (lafayette-veterans.html):
<!-- BEGIN MEDIA THUMBNAIL GALLERY -->
<div class="cbp-l-project-details">
<div class="cbp-l-project-details-title"><span>Media Gallery</span></div>
<a href="../Metalset/cubeportfolio/img/lafayette-veterans-big.jpg" class="cbp-lightbox" data-title="TBD">
<img src="cubeportfolio/img/lafayette-veterans-big.jpg" style="width:150px; height:auto"></a>
<a href="../Metalset/cubeportfolio/img/lafayette-veterans-big.jpg" class="cbp-lightbox" data-title="TBD">
<img src="cubeportfolio/img/lafayette-veterans-big.jpg" style="width:150px; height:auto"></a>
<a href="../Metalset/cubeportfolio/img/lafayette-veterans-big.jpg" class="cbp-lightbox" data-title="TBD">
<img src="cubeportfolio/img/lafayette-veterans-big.jpg" style="width:150px; height:auto"></a>
<a href="../Metalset/cubeportfolio/img/lafayette-veterans-big.jpg" class="cbp-lightbox" data-title="TBD">
<img src="cubeportfolio/img/lafayette-veterans-big.jpg" style="width:150px; height:auto"></a>
</div>
</div>
较大的 JS 文件中的灯箱功能:
// LIGHTBOX
if (t.$obj.find(t.options.lightboxDelegate)) {
t.lightbox = Object.create(popup);
t.lightbox.init(t, 'lightbox');
t.$obj.on('click' + eventNamespace, t.options.lightboxDelegate, function(e) {
t.lightbox.openLightbox(t.blocksAvailable, this);
e.preventDefault();
});
}
为灯箱分配的委托是 .cbp-lightbox
【问题讨论】:
标签: javascript jquery html ajax