vue循环列表,hover不起作用

<li class="list-group-item"v-for="data in list">

<div  class="dask">
    <button  class="btn btn-primary"  style="margin-left: 20px;">
    编辑</button>
    <button class="btn btn btn-warning">删除</button>
</div>

</li>

$(".list-group-item").hover(
function () {
$(this).find(".dask").stop().delay(50).animate({"top":0,opacity:0.5},300)
},
function () {

$(this).find(".dask").stop().animate({"top":-200,opacity:0},300)

}
);

  1. 代码在上面,发现下面那个hover方法不起作用

我试着放入

v-on:mouseenter="enter" v-on:mouseleave="leave"

效果总是不尽人意

不知道大家有没有碰到过这种情况,可以讨论一下,总觉得是有解决办法的
(PS:这代码格式化我也是醉了……)

阅读 8.8k
3 个回答

表示已经放弃jq
对于hover,下面是我的一种方案:
html:

    <nav id="nav" @mouseover="eNavOver($event)" @mouseout="eNavOut($event)">
        <a 
            v-for="(item,index) in aNavList" 
            :href="item.href" 
            :class="{'z-hv':item.isHv}"
            :data-id="index"    
        >{{item.name}}</a>
    </nav>
    nav a{
        color:#666;
        transition:all .5s;
    }
    /*hover状态*/
    nav a.z-hv{
        color:#233;
    }
    var vNav=new Vue({
        el:'#nav',
        data:{
            aNavList:[{
                name:'a',
                href:'#nav',
                isHv:0,
            },{
                name:'b',
                href:'#nav',
                isHv:0,
            }]
        },
        methods:{
            eNavOver:function(e){
                var target=e.target;
                var i=target.getAttribute('data-id');
                if(i&&this.aNavList[i].isAtv){
                    this.aNavList[i].isHv=1;
                }
            },
            eNavOut:function(e){
                var target=e.target;
                var i=target.getAttribute('data-id');
                if(i){
                    this.aNavList[i].isHv=0
                }
            }
        },
    })

虽然代码多了点
但是好处是易于控制,事件方法高度集中在vue对象上
而且对于a下面如果有更多节点,不妨在css里面这样写:

    .z-hv span{
        color:#555
    }
    .z-hv i{
        font-size:0.8em
    }
    ...

只给a添加一个类,其余工作让css完成

用了vue就抛弃jquery吧,不然以后代码还是很乱。直接在对应dom直接绑定对应方法就可以的,参考click事件。

楼主你在hover函数内打印一下$(this)看看是否指针失效了?$(this)==$(".list-group-item")?有可能是这里出问题了,还有就是hover函数下的第二个方法没有正确关闭,控制台没有报错?Hover事件触发的时候,里面的方法被调用了?控制台打断点仔细调试一下,看看到底是哪一步没有执行啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题