在两个单独的滑块中匹配数据属性

时间:2014-04-21 18:01:17

标签: javascript jquery html css

我使用两个单独的滑块,一个用于显示图像,另一个用于显示相应的文本。带有文本的滑块需要始终显示所有文本,只有与第一个滑块具有相同数据属性的文本,通过添加"活动"来改变颜色。类。由于无论从第一个滑块显示什么图像,都必须显示所有文本,因此我无法组合两个滑块。

我的问题是如何匹配来自两个单独滑块的两个数据属性,以将活动类添加到第二个滑块中的一个元素。

到目前为止,这是我的代码:

jQuery(document).ready(function() {
        jQuery('.flexslider').flexslider({
            animation: "fade"
        });


        // if the class .flex-active-slide is being used on an li
        // if data-roles are the same #
        if ('ul.slides li.flex-active-slide' && 'ul.slides li[data-role] == ul.slider-text li[data-role]') {

            // add active class to selected li in second slider
            jQuery("ul.slider-text li").addClass('active');
        }
    });


#########SLIDER 1 #################


<div class="flexslider">
        <ul class="slides">
            <li data-role="1"><img src="/media/island/content/cool-places/1_PARROT_CAY.jpg"/></li>
            <li data-role="2"><img src="/media/island/content/cool-places/2_CUISINART.jpg"/></li>
            <li data-role="3"><img src="/media/island/content/cool-places/3_LITTLE_PALM.jpg"/></li>
            <li data-role="4"><img src="/media/island/content/cool-places/4_RITZ_CAYMAN.jpg"/></li>
            <li data-role="5"><img src="/media/island/content/cool-places/5_REGENT.jpg"/></li>
            <li data-role="6"><img src="/media/island/content/cool-places/6_KIAWAH.jpg"/></li>
            <li data-role="7"><img src="/media/island/content/cool-places/7_FOUR_SEASONS.jpg"/></li>
            <li data-role="8"><img src="/media/island/content/cool-places/8_SEA_ISLAND.jpg"/></li>
            <li data-role="9"><img src="/media/island/content/cool-places/9_CHEECA.jpg"/></li>
            <li data-role="10"><img src="/media/island/content/cool-places/10_RITZ_NAPLES.jpg"/></li>
            <li data-role="11"><img src="/media/island/content/cool-places/11_PINK_SANDS.jpg"/></li>
        </ul>
    </div>


############### SLIDER 2 #####################

<ul class="slider-text">
        <li data-role="1"><p class="uppercase">parrot cay &bull; turks and caicos</p></li>
        <li data-role="2"><p class="uppercase">sea island golf club &bull; sea island</p></li>
        <li data-role="3"><p class="uppercase">ritz carlton &bull; naples</p></li>
        <li data-role="4"><p class="uppercase">cheeca lodge &bull; islamorada</p></li>
        <li data-role="5"><p class="uppercase">ritz carlton &bull; grand cayman</p></li>
        <li data-role="6"><p class="uppercase">four seasons &bull; palm beach</p></li>
        <li data-role="7"><p class="uppercase">little palm island &bull; little torch key</p></li>
        <li data-role="8"><p class="uppercase">kiawah island golf resort &bull; kiawah island</p></li>
        <li data-role="9"><p class="uppercase">regent palms &bull; turks & caicos</p></li>
        <li data-role="10"><p class="uppercase">cuisinart &bull; anguilla</p></li>
        <li data-role="11"><p class="uppercase">pink sands resort &bull; harbor island</p></li>
    </ul>

1 个答案:

答案 0 :(得分:0)

首先让我先问一下是否需要始终显示第二个列表,为什么需要一个滑块?

无论如何,听起来你想要做的就是添加自定义控件导航。这可以通过将属性manualControls添加到init对象来实现,如下所示:

jQuery('.flexslider').flexslider({
    animation: "fade",
    manualControls: '.slider-text li'
});

这会将滑块链接到控件nav,它们应该共享类和状态。我相信控件导航设置的顺序应该与flexslider的相应滑动顺序相匹配(导航项的索引应该与幻灯片的索引匹配)。

设置完成后,您应该具有幻灯片和控件导航的活动状态,您可以相应地设置样式。希望这可以帮助!