【问题标题】:Vue.js event after condition element is rendered渲染条件元素后的 Vue.js 事件
【发布时间】:2018-04-18 12:42:29
【问题描述】:

我需要事件或一些解决方法,如何使用 $(".myTarget") 在 jQuery 中使用 v-if 访问当前附加的元素

var vue = new Vue({
  el: '#vue',
  data: {
    showEl : false,
  },
  watch: {
    showEl: function (newShowEl, oldShowEl) {
      console.log("Watch event: " + $(".myTarget")[0]); 
    }
  },
  methods: {
    toggleMyTarget: function () {
      vue.showEl = !vue.showEl;
      console.log("Toggle on click event: " + $(".myTarget")[0]); 
    }
  },
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="vue">
  <div v-if="showEl">
    <span class="myTarget">My element</span>
  </div>

  <button @click="toggleMyTarget">Toggle element</button>
</div>

如果我在showEl 变量上使用watch,它会在元素呈现之前触发,我还不能访问该元素。如何实现.myTarget在渲染后立即访问?

【问题讨论】:

    标签: javascript jquery vue.js vuejs2


    【解决方案1】:

    使用$nextTick

    var vue = new Vue({
      el: '#vue',
      data: {
        showEl : false,
      },
      watch: {
        showEl: function (newShowEl, oldShowEl) {
          this.$nextTick(() => console.log("Watch event: " + $(".myTarget")[0]))
        }
      },
      methods: {
        toggleMyTarget: function () {
          vue.showEl = !vue.showEl;
          this.$nextTick(() => console.log("Toggle on click event: " + $(".myTarget")[0]))
        }
      },
    });
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div id="vue">
      <div v-if="showEl">
        <span class="myTarget">My element</span>
      </div>
    
      <button @click="toggleMyTarget">Toggle element</button>
    </div>

    【讨论】:

    • 你是真正的英雄!谢谢!
    猜你喜欢
    • 2017-12-10
    • 2019-08-07
    • 2016-02-07
    • 1970-01-01
    • 2017-08-21
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    相关资源
    最近更新 更多