javascript - 为什么主干 View 会触发更改事件两次?

标签 javascript jquery backbone.js

我的 Backbone 观点是:

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 中收到两个带有“事件触发”的日志。意味着事件被触发两次。为什么会这样?

以前有人发现过这个问题吗? 我犯了什么错误??

最佳答案

这是 Javascript 中的一个常见错误。您可以在互联网上找到许多专门针对事件被触发两次的文章。我不喜欢 Backbone,但在 jquery 中你可以尝试这样的东西

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

这绝对是 Javascript 问题,因为如果你点击 google 并搜索事件触发两次,你会发现 Angular、Jquery 和backbone 等都在某处触发事件两次甚至三次。所以,看起来这背后是 javascript 的。当然,如果您使用 Mozilla 开发者网络搜索此内容,您会发现专家也这么说。

关于javascript - 为什么主干 View 会触发更改事件两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442079/

相关文章:

javascript - 如何编辑 JS 使其适用于两个 Id?

jquery - Bxslider - 根据多张幻灯片中的内容调整 li 宽度

jquery - 仅将 CSS 边距应用于 div 中的文本

backbone.js - Backbone 路由器没有pickup功能

javascript - 将包含属性的 Backbone 集合序列化为 JSON

javascript - 当我们设置更新的对象时如何在 Backbone 模型上触​​发更改事件

php - .load 不起作用,我想我的概念错了?

javascript - 传递处理程序后 Handlebars 上下文丢失

javascript - 有没有办法在 my/public/javascripts 目录中的 javascript 文件中执行嵌入式 ruby​​?

javascript - 围绕非矩形形状流动和滚动文本