怎么遍历这样的dom并作匹配?

<div class="house">
            <img class="house-model" src="<?php echo Yii::app()->baseUrl;?>/images/home/new/home-user-scene.png">
            <a class="hight-light lever" data-item="Lever" style="left:26%;top:45%;"></a>
            <a class="hight-light lever" data-item="Lever" style="left:35%;top:54%;"></a>
            <a class="hight-light lever" data-item="Lever" style="left:58%;top:46%;"></a>
            <a class="hight-light lever" data-item="Lever" style="left:26%;top:76%;"></a>
            <a class="hight-light deadbolt" data-item="Deadbolt" style="left:42%;top:72%;"></a>
            <a class="hight-light lever-deadbolt" data-item="Lever + Deadbolt" style="left:78%;top:76%;"></a>
            <a class="hight-light wifi-adaptor" data-item="WiFi Adaptor" style="left:71%;top:81%;"></a>
            <!--时间轴-->
            <div class="scene-time">
                <div class="scene-time-menu-title">
                    <span class="icon icon-utec-lock-ul3 icon-blue icon-20"></span>
                    <span class="scene-menu font-16">Smart Lock</span>
                </div>
                <ul class="time-warp">
                    <li class="item-time"><b class="dot"></b><span class="scene-name">Lever</span></li>
                    <li class="item-time"><b class="dot"></b><span class="scene-name">Deadbolt</span></li>
                    <li class="item-time"><b class="dot"></b><span class="scene-name">Lever + Deadbolt</span></li>
                    <li class="item-time"><b class="dot"></b><span class="scene-name">WiFi Adaptor</span></li>
                </ul>
            </div>
</div>

是写一个动画,就是添加class的,感觉挺简单,但是写不出来了。

clipboard.png

我的想法是滑过右边的时间线中的某一个时,与左边的蓝色点匹配,然后给匹配的这个蓝色点(我给每一个蓝点添加了一个自定义的属性 data-item )加一个class.
我是这样写的:

       $('.scene-time').on('hover','.item-time',function(){
            var sceneName = $(this).children().text();//取到滑过的这个值
            var dataItem = $(this).closet('a.hight-light').attr('data-item');//获取右边蓝色点的data-item
            if(sceneName == dataItem){
                ...
            }else{
                ...
            }
        })

但现在就是这个dataItem 取不了,是不是需要遍历这个蓝点?
要怎么写了?

正确答案:

        $('.scene-time').on('hover','.item-time',function(){
            var sceneName = $(this).children().text();
            var dataItem;
            $('a.hight-light').map(function(){
                dataItem = $(this).attr('data-item');
                console.log(dataItem);
                if(sceneName == dataItem){
                    $(this).addClass('aa');
                }
            })
        });
阅读 1.3k
1 个回答

思路的话,应该还需要遍历蓝色点去和当前时间轴作匹配吧

var dataItem = $(this).closet('a.hight-light').attr('data-item');
改为

$('a.hight-light').map(function(){
    var dataItem = $(this).attr('data-item');
    if(sceneName == dataItem){
        ...
    }else{
        ...
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题