【问题标题】:twitter bootstrap carousel link directly to a specific slidetwitter bootstrap carousel 直接链接到特定幻灯片
【发布时间】:2013-12-16 13:20:11
【问题描述】:

我在我的网站上使用 twitter 引导轮播来显示一组图像。我想知道是否可以允许链接链接到轮播中的特定幻灯片。因此,在 10 张幻灯片中,用户可以单击链接直接从 href 链接说出幻灯片 5。

这可以通过引导轮播实现吗?还是我找错了树?

编辑

您好,所以我在 document.ready 函数下的 javascript 中添加了以下内容。

但是输入网址www.example.com/models.php/5 没有任何作用。
我是不是做错了什么?

var url = window.location.href;
var slide = url.substring(url.lastIndexOf('/')+1); // 4
goToSlide(slide);

function goToSlide(number) {
    $("#MyCarousel").carousel(number);
}

【问题讨论】:

    标签: javascript jquery twitter-bootstrap


    【解决方案1】:

    无需 JavaScript 的方式

    您可以为此使用data-slide-to attribute,它接受从0开始的索引代表幻灯片编号。

    使用数据属性轻松控制轮播的位置。 data-slide 接受关键字prevnext,这会改变相对于其当前位置的幻灯片位置。或者,使用data-slide-to 将原始幻灯片索引传递给轮播data-slide-to="2",这会将幻灯片位置移动到以0 开头的特定索引。

    只需为您的锚添加一个属性,然后就可以使用了。

    <a href="#" data-slide-to="5">Go to slide #5</a>
    

    感谢Cawas's comment on this answerJonas's answer on this question


    老式的 JavaScript 方式

    你需要使用.carousel(number)函数。

    .carousel(数字)

    将轮播循环到特定帧(从 0 开始,类似于 数组)。

    查看bootstrap docs.

    更具体的;

    创建一个javascript函数来调用,它应该是这样的:

    function goToSlide(number) {
       $("#carousel").carousel(number);
    }
    

    然后,只需在您的链接上添加一个 onClick 事件。

    <a href="#" onClick="javascript:goToSlide(5);">Go to slide #5</a>
    

    从 URL 获取幻灯片信息

    来源链接是www.example.com/models.php/4

    您可以查看document.ready 上的网址,如果网址末尾有一些数据,您只需调用 goToSlide 函数即可。

    var url = window.location.href;
    var slide = url.substring(url.lastIndexOf('/')+1); // 4
    
    // Remove the trailing slash if necessary
    if( slide.indexOf("/") > -1 ) { 
        var slideRmvSlash = slide.replace('/','');
        slide = parseInt(slideRmvSlash);
    }
    goToSlide(slide);
    

    【讨论】:

    • 那么这将如何实现。例如,如果用户从外部站点单击诸如 www.example.com/models.php/4 之类的 href 链接上的链接,该链接将链接到轮播上的幻灯片 4?我对如何实现这一点感到困惑。谢谢
    • 嗨,我已经更新了我的问题,它仍然不起作用。我是不是做错了什么。
    • +1 但有一点小意思:最好使用像&lt;a href="#" data-slide="5"&gt;...&lt;/a&gt;这样的不显眼的标记,然后像$("[data-slide]").click(function(e){ e.preventDefault(); ... });那样在js中编写处理程序。
    • @moonwave99 谢谢,请随时编辑答案以进一步改进!
    • 虽然我同意@moonwave99(可惜他至少还没有改进答案)并且虽然使用&lt;a href&gt;与问题无关,但还有一个更进一步的可能巧合的(看起来@moon 没有注意到)相关的优化步骤,我意识到thanks to Jonas down there:对于a href,我们可以只使用data-slide="next",或者在这种情况下使用data-slide=2,不需要进一步的javascript。它在the docs
    【解决方案2】:

    我想你正在寻找这个http://getbootstrap.com/javascript/#carousel

    使用数据属性轻松控制轮播的位置。 data-slide 接受关键字prevnext,这会改变相对于当前位置的幻灯片位置。或者,使用data-slide-to 将原始幻灯片索引传递给轮播data-slide-to="2",这会将幻灯片位置移动到以0 开头的特定索引。

    【讨论】:

    • 谢谢你,乔纳斯,我也将此添加到我的答案中。
    【解决方案3】:

    按照 Seçkin 的回答,我必须执行两个小字符串操作才能使我的 slide 字符串可用。这两个模组让goToSlide函数正确解析外部链接。

    从 url 中去除尾部斜杠。 (我网站的网络服务器插入斜线。)

    var slideRmvSlash = slide.replace('/','');
    

    转换为整数

    var slideInt = parseInt(slideRmvSlash);
    

    之后效果很好。

    goToSlide(slideInt)
    

    【讨论】:

    • 嘿,很高兴我能帮上忙!我也在更新我的答案。
    猜你喜欢
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2012-11-19
    • 2014-08-02
    • 2013-04-29
    相关资源
    最近更新 更多