滑块外的自有div中的标题

时间:2013-07-05 13:00:40

标签: jquery bxslider

我正在使用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突出显示,其余的是正常的,但这只是额外的。

感谢您的帮助!

3 个答案:

答案 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>