我正在阅读有关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/

10-09 13:22