关于vue的this指向

var city = new Vue({
    el:'.city',
    data:{
        choices:[
            {cities:'北京'},
            {cities:'上海'},
            {cities:'福州'},
            {cities:'广州'},
            {cities:'青岛'}
        ]
    },
    methods:{
        changeCity:function(){
            $(this).css('color','red').siblings().css('color','');  //问题在这里,这里的this好像不是指向点击的那个元素,好像是指向vue里面的,该怎么办?
        }
    }
    
});

<p class="city">    切换城市:
    <a href="#" v-on:click="changeCity"  v-for="item in choices">
    {{item.cities}} 
    </a>
</p>
阅读 15.6k
5 个回答

vue中methods对象里的函数, this指向的都是当前实例或者组件

<a href="#" v-on:click="changeCity"  v-for="item in choices">

改成

<a href="#" v-on:click="changeCity($event)"  v-for="item in choices">
changeCity:function(){
    $(this).css('color','red').siblings().css('color','');
}

改成

changeCity:function(e){
    $(e.target).css('color','red').siblings().css('color','');
}
新手上路,请多包涵

你这样写的this是指向一个vue的实例vm;需要注意的是这里是vue不是jQuery哦,我觉得在vue中吧样式绑定到数据挺好的,这样就不用直接操作dom啦

vue 是数据驱动,用数据来控制view 层的样式,一定要摆脱 jQuery 直接操作 DOM 那种思维模式

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