我正在阅读有关Ractive.js事件代理here的信息。
我现在想用Ractive.js中的事件代理替换click事件(当前用jQuery编写)。这是当前代码:
$('.filter-close').click(function(){
$(this).parent().hide();
});
HTML位很简单:
<a on-click="closeFilter" class="filter-close">close</a>
而且我知道如何在Ractive.js中创建代理:
ractive.on( 'closeFilter', function ( event ) {
//code here
});
如果我在其中放置警报,则单击后它将正确执行。
我遇到的问题是如何访问元素本身。在上面的示例中,我需要隐藏clicked元素的父级。在jQuery中,我使用
$(this)
查找元素。我如何在Ractive中做同样的事情?this
返回整个ractive对象,$(this)
引发错误,并且我认为通过ID来获取元素会破坏首先使用Ractive的目的。我也知道有可能在事件中传递一个参数,例如
on-click="closeFilter:{{arg}}"
,但不知道在这种情况下arg
应该是什么(或者这是否是正确的方法)。有人可以在这里指出正确的方向吗?
最佳答案
event.node
允许访问DOM元素
ractive.on( 'activate', function ( event ) {
// event.node will be the button (will be <button on-click='activate'>Activate!</button>)
});
要访问父节点,您可以执行
event.node.parentNode
如果页面上有jquery,则可以轻松地执行
$(event.node.parentNode).hide();
关于javascript - 等效于Ractive.js事件代理中jQuery的$(this),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29319679/