我已經設置的元素,這點我可以動態地添加的: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'的問題 –