我发现自己遇到了一点麻烦,因为触发元素上的事件也会触发绑定到父元素的事件,如下所示。
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');
}
});div > div {
display: inline-block;
padding: 10px;
background: rgba(0, 0, 0, .3);
padding: 10px 10px 10px 50px;
cursor: pointer
}<script src="https://cdn.ractivejs.org/latest/ractive.js"></script>
<div id="wrapper"></div>
发布于 2015-01-01 15:29:17
您可以通过调用DOM的stopPropagation方法来阻止DOM事件冒泡。传递给Ractive事件处理程序的event参数将原始DOM事件存储为event.original,因此您可以这样做:
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();
}
});div > div {
display: inline-block;
padding: 10px;
background: rgba(0, 0, 0, .3);
padding: 10px 10px 10px 50px;
cursor: pointer
}<script src="https://cdn.ractivejs.org/latest/ractive.js"></script>
<div id="wrapper"></div>
https://stackoverflow.com/questions/27730494
复制相似问题