Ractive.js 事件代理中 jQuery 的 $(this) 的等价物
Equivalent of jQuery's $(this) in Ractive.js event proxies
我正在阅读 Ractive.js 事件代理 here。
我现在想用 Ractive.js 中的事件代理替换点击事件(目前在 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
});
如果我在其中放置一个警报,它会在点击时正确执行。
我 运行 遇到的问题是,如何访问元素本身。在上面的例子中,我需要隐藏被点击元素的父元素。在 jQuery 中,我使用 $(this)
来查找元素。我如何在 Ractive 中做同样的事情?
this
returns 整个 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();
所以,你在event.node之后,然后访问Javascript中的父节点并隐藏它,如下所示。
ractive.on( 'activate', function ( event ) {
event.node.parentNode.style.display = 'none';
}
我正在阅读 Ractive.js 事件代理 here。
我现在想用 Ractive.js 中的事件代理替换点击事件(目前在 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
});
如果我在其中放置一个警报,它会在点击时正确执行。
我 运行 遇到的问题是,如何访问元素本身。在上面的例子中,我需要隐藏被点击元素的父元素。在 jQuery 中,我使用 $(this)
来查找元素。我如何在 Ractive 中做同样的事情?
this
returns 整个 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();
所以,你在event.node之后,然后访问Javascript中的父节点并隐藏它,如下所示。
ractive.on( 'activate', function ( event ) {
event.node.parentNode.style.display = 'none';
}