如何触发v-on:从jquery触发器中单击?

时间:2016-04-13 01:10:28

标签: jquery html backbone.js vue.js

我正在使用vuejs 1. *和jquery.But我无法触发v-on:来自jquery的click事件

<a id="test" v-on:click="refresh" href="#" >Cick </a> 

我的jquery代码是

$("#test).trigger('click');我尝试触发

$("#test).trigger('v-on:click');以及

3 个答案:

答案 0 :(得分:2)

这不是一个理想的解决方案,但您可以在紧要关头使用它:

当您第一次声明Vue对象时,可以将其保存到变量(也不建议使用全局窗口变量,但它适用于此示例)

window.myVueObj = new Vue({...});

然后你可以直接调用refresh()方法来触发它:

$("#test).on('click',function(){
     window.myVueObj.refresh();
});

同样,这不是推荐的完成此任务的方法,它只是一种可行的方法。

答案 1 :(得分:2)

您可以使用jquery将jquery事件绑定到ready中的元素。您将需要在事件处理程序中过滤掉鼠标单击,这样您就不会多次调用刷新。参见示例代码

<html>
<head>
<title>test</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script>
<script src="https://code.jquery.com/jquery-2.2.3.js"></script>
<div id="app">
  <a id="test" v-on:click="refresh" href="#"> Refresh <a/>
  <p>
  <a onclick="triggerClick()"> jQuery Trigger </a>
</div>

<script>
function triggerClick() {
    console.log('triggering click from jQuery')
    $('#test').trigger('click')
}

new Vue({
    el: '#test',
    ready: function () {
        var self = this
        $(self.$el).on('click', function(evt) {
            // do not call refresh on mouse click
            if (typeof evt.originalEvent !== 'object') {
                self.refresh()
            }
        })
    },
    methods: {
        refresh: function () {
            console.log('refresh called')
        }
    }
})
</script>
</body>
</html>

答案 2 :(得分:1)

如果它不必是触发refresh()的click事件,您可以使用组件的实例直接调用vm.refresh()。