首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件重写RactiveJS

事件重写RactiveJS
EN

Stack Overflow用户
提问于 2015-01-01 11:46:57
回答 1查看 66关注 0票数 1

我发现自己遇到了一点麻烦,因为触发元素上的事件也会触发绑定到父元素的事件,如下所示。

代码语言:javascript
复制
var template = new Ractive({
  el: 'wrapper',
  template: '<div on-click="open">OPEN<div on-click="close">CLOSE</div></div>'
});

template.on({
  open: function(e) {
    alert('opening');
  },
  close: function() {
    alert('closing');
  }
});
代码语言:javascript
复制
div > div {
  display: inline-block;
  padding: 10px;
  background: rgba(0, 0, 0, .3);
  padding: 10px 10px 10px 50px;
  cursor: pointer
}
代码语言:javascript
复制
<script src="https://cdn.ractivejs.org/latest/ractive.js"></script>
<div id="wrapper"></div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-01 15:29:17

您可以通过调用DOM的stopPropagation方法来阻止DOM事件冒泡。传递给Ractive事件处理程序的event参数将原始DOM事件存储为event.original,因此您可以这样做:

代码语言:javascript
复制
var template = new Ractive({
  el: 'wrapper',
  template: '<div on-click="open">OPEN<div on-click="close">CLOSE</div></div>'
});

template.on({
  open: function(e) {
    alert('opening');
  },
  close: function(e) {
    alert('closing');
    e.original.stopPropagation();
  }
});
代码语言:javascript
复制
div > div {
  display: inline-block;
  padding: 10px;
  background: rgba(0, 0, 0, .3);
  padding: 10px 10px 10px 50px;
  cursor: pointer
}
代码语言:javascript
复制
<script src="https://cdn.ractivejs.org/latest/ractive.js"></script>
<div id="wrapper"></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27730494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档