【发布时间】:2011-06-03 19:11:49
【问题描述】:
我正在尝试将 jcarousel 与模板结合使用。当图像直接在页面中时,轮播可以完美运行,但我正在尝试使用模板使图像动态化(不知道页面加载时会加载哪些图像)。
这就是我要做的,我有这个 jQuery 代码来加载模板(外部模板)
var images = {
imageItems: [
{ path: '../Content/img/strip/strip_1.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_2.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_3.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_1.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_2.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_3.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_1.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_3.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_2.jpg', name: 'Photo' },
{ path: '../Content/img/strip/strip_1.jpg', name: 'Photo' }
]
};
$.get('/jQueryTemplates/_photographerImagesSlideShow.tmpl.htm', function (templates) {
$('body').append(templates);
$('#imageSlideShowTemplate').tmpl(images).appendTo('.slidestrip');
});
这是来自外部模板的代码
<script id="imageSlideShowTemplate" type="x-jquery-tmpl">
<ul id="slidestriplist" class="jcarousel-skin-tango">
{{each imageItems}}
<li>{{tmpl($value) '#slideShowImage'}}</li>
{{/each}}
</ul>
</script>
<script id="slideShowImage" type="x-jquery-tmpl">
<a href="#" rel="lightbox"><img src="${path}" width="150" height="126" alt="${name}" /></a>
</script>
加载模板后,我有这段代码来初始化轮播,或者至少这是它应该做的事情
$('.slidestrip img').each(function () {
$(this).hover(function () {
$(this).stop().animate({ opacity: 1.0 }, 500);
},
function () {
$(this).stop().animate({ opacity: 0.5 }, 500);
});
});
$('#slidestriplist').jcarousel({
visible: 6
});
现在的问题是,轮播无法正常工作,因为我认为它试图在模板实际注入页面之前对其进行初始化,从而导致图像垂直加载而不是水平加载并且没有轮播(甚至图像的悬停没有任何作用)。
所以问题来了,有谁知道我在以这种方式使用模板时如何使它工作?如何仅在模板注入标记后初始化轮播?
【问题讨论】:
标签: jquery jquery-plugins jcarousel jquery-templates