我正在使用bxslider。它对我很有用,但我有一个问题。我想要bxwrapper之外的标题。
滑块的html看起来像这样只有div标题由我创建
<div class="captions"></div>
<ul class="bxslider">
<li><img src="images/1.jpg" title="headline, text" /></li>
<li><img src="images/1.jpg" /></li>
<li><img src="images/1.jpg" title="text" /></li>
<li><img src="images/1.jpg" title="text" /></li>
</ul>
使用此代码从图像的标题中生成标题:
* Appends image captions to the DOM
*/
var appendCaptions = function(){
// cycle through each child
slider.children.each(function(index){
// get the image title attribute
var title = $(this).find('img:first').attr('title');
// append the caption
if (title != undefined && ('' + title).length) {
$(this).append('<div class="bxcaptions"><span>' + title + '</span></div>');
}
});
}
我试图设置它们位于滑块之外的标题,但是滑块使用了隐藏的溢出,因此不可能。
所以我希望将标题写入<div class="captions"></div>
,我可以按照我想要的方式定位。
此外,我可能希望前面的标题用h1突出显示,其余的是正常的,但这只是额外的。
感谢您的帮助!
答案 0 :(得分:0)
这里是jsbin:http://jsbin.com/ikokex/3
jquery的:
var captionText = '';
$('ul.bxslider > li > img').each(function(i,e) {
var titleAttr = $(this).attr('title');
if(typeof titleAttr != 'undefined') {
var captionSplit = titleAttr.split(',');
$('.captions').append('<div class="caption-'+i+'"></div>');
if (captionSplit.length > 1) {
captionText += '<h1>'+captionSplit[0]+'</h1>';
captionText += '<span>'+captionSplit[1]+'</span>';
} else {
captionText += '<span>'+captionSplit[0]+'</span>';
}
$('.caption-'+i).html(captionText);
captionText = '';
}
});
答案 1 :(得分:0)
我想我有一个解决方案,但它很脏!我插入此代码$('.captions').html(slider.children.eq(slider.active.index).find('img:first').attr('title'));
在jquery.bxslider.js第1188行的幻灯片函数末尾。
如果有人有更好的解决方案,请告诉我!
答案 2 :(得分:0)
我想你想要这样。 下面的代码片段是bx滑块标题的更好解决方案
jQuery('.bxslider').bxSlider({
nextSelector: '#slider-next',
prevSelector: '#slider-prev',
nextText: 'next',
prevText: 'prev',
pager: true,
prependtxt: 'Examples ',
pagerType: 'short',
mode: 'fade',
auto: true,
onSliderLoad: function(currentIndex) {
$(".slider-txt").html($('.bxslider li').eq(currentIndex).find("img").attr("title"));
},
onSlideBefore: function($slideElement, oldIndex, newIndex) {
$(".slider-txt").html($slideElement.find("img").attr("title"));
}
});
.slider-txt{
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://bxslider.com/lib/jquery.bxslider.css" rel="stylesheet" />
<script src="http://bxslider.com/lib/jquery.bxslider.js"></script>
<div class="image-slider">
<ul class="bxslider">
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Letterhead" title="Letterhead" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Business Card" title="Business Card" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Compliment Slip" title="Compliment Slip" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Envelope" title="Envelope" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Folder" title="Folder" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Referral Card" title="Referral Card" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Single Sided Referral Pad" title="Single Sided Referral Pad" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="Post, note or thank you card" title="Post, note or thank you card" />
</li>
<li>
<img src="http://www.menucool.com/slider/prod/image-slider-2.jpg" alt="WEBSITE (OPTIONAL)" title="WEBSITE (OPTIONAL)" />
</li>
</ul>
<div class="outside"><span id="slider-prev"></span><span id="slider-next"></span>
</div>
<div class="slider-txt"></div>
</div>