为什么骨干视图触发两次更改事件?

我的骨干观点如下:

var aView = Backbone.view.extend({
    events: {
        'change #select-opr': 'changeOperation'
    },
    initialize: function () {},
    render: function () {},
    changeOperation: function () {
        console.log("event triggered.");
    }
});

更改事件与选择下拉列表相关联。

<select name="operation" id="select-opr" style="height: 29px;">
    <option>Select an Attribute</option>
    <option value="method">Method</option>
    <option value="project">Project</option>
</select>

当我更改选择选项时,我在console.log中获得了两个'event triggered'日志。 意味着事件被触发两次。 这是为什么?

有没有人发现过这个问题? 我在做什么错误?


这是Javascript中的一个常见错误。 你可以在互联网上找到很多专门针对SO的文章,因为事件被激发了两次。 我不是骨干的粉丝,但在jQuery中,你可以尝试这样的事情

 $(document).on('click', '#task-list li', function(e)
 {
       alert('Hellow world');
       e.stopPropagation();
       return false;
 });

而且这绝对是Javascript的问题,因为如果你打谷歌和搜索事件触发两次,你会看到Angular,Jquery和骨干等都在某处射击事件两次甚至三次。 所以,它似乎是在这背后的JavaScript。 当然,如果你使用Mozilla开发者网络进行搜索,那么你可以看到专家也这么说。


我不确定你想要实现什么,但是应该将changeOperation绑定到选择的选项而不是选择?

链接地址: http://www.djcxy.com/p/63109.html

上一篇: Why backbone view fires change event twice?

下一篇: Backbone events not fired by a jquery click event inside the view