我已经设置的元素,这点我可以动态地添加的:jQuery:如何在事件发生之前执行代码并将结果作为事件参数?
<div id="some-id-1" data-id="1" class="some">
<canvas />
</div>
<div id="some-id-2" data-id="2" class="some">
<canvas />
</div>
<div id="some-id-3" data-id="3" class="some">
<canvas />
</div>
...
我要附加事件组特定的项目。为了实现它,我有这样的代码:
$('body')
.on('click', 'canvas', function (event) {
var idx = $(this).parents('.some').data('id');
wrap[idx].action1(event);
})
.on('mousemove mouseout', 'canvas', function() {
var idx = $(this).parents('.some').data('id');
wrap[idx].action2();
})
.on('mousemove', 'canvas', function (event) {
var idx = $(this).parents('.some').data('id');
wrap[idx].action3(event);
});
在每一个事件,我需要这个额外的行来获得元素的ID,我点击,这是在对象的数组索引。我想摆脱这条线。
有没有办法在事件发生前致电var idx = $(this).parents('.some').data('id');
并将idx
作为事件的参数?
或任何其他方式来组织代码,而不是写在任何地方var idx = $(this).parents('.some').data('id');
。
那么究竟是什么问题,你没有得到'idx'价值?顺便说一句,你在HTML中的“canvas”开始标记? – deepakb
不可能,代码将如何“知道”哪个canvas元素“即将”触发事件? –
@DeepakBiswal重复问题。它是虚拟模板,没有'canvas'的问题 –