Я пытаюсь выяснить, как решить, какой прослушиваемый класс присваивается элементам при прокрутке, но он действует слишком быстро, и мне нужно немного отложить его, когда он фактически касается, а не касается во время прокрутки, это мой код того, как это работает:
$('div, a, span').filter('[tappable][data-tappable-role]').bind('touchstart', function()
{
var self = $(this);
self.addClass(self.data('tappable-role'));
}).bind('touchend', function()
{
var self = $(this);
self.removeClass(self.data('tappable-role'));
}).bind('click', function()
{
var self = $(this),
goTo = self.data('goto');
if(typeof goTo !== 'undefined')
{
window.location = goTo;
}
});
При прокрутке он назначит класс элементу, когда я едва коснулся его, и я хочу, чтобы это не происходило, если к нему не прикасаться (не нажимать). Хотя я попытался поэкспериментировать с setTimeout, но это не работает, так как это задерживает, но он все равно назначит класс позже.
Вот как я это сделал с помощью setTimeout:
var currentTapped;
$('div, a, span').filter('[tappable][data-tappable-role]').bind('touchstart', function()
{
clearTimeout(currentTapped);
var self = $(this);
var currentTapped = setTimeout(function()
{
self.addClass(self.data('tappable-role'));
}, 60);
}).bind('touchend', function()
{
clearTimeout(currentTapped);
var self = $(this);
self.removeClass(self.data('tappable-role'));
}).bind('click', function()
{
clearTimeout(currentTapped);
var self = $(this),
goTo = self.data('goto');
if(typeof goTo !== 'undefined')
{
window.location = goTo;
}
});
Как я могу сделать это эффективным способом?
Вам нужно просмотреть его на своем iPhone / iPod / iPad или эмуляторе для проверки скрипки.
UPDATE:
function nextEvent()
{
$(this).on('touchend', function(e)
{
var self = $(this);
self.addClass(self.data('tappable-role')).off('touchend');
})
.on('touchmove', function(e)
{
var self = $(this);
self.removeClass(self.data('tappable-role')).off('touchend');
})
.click(function()
{
var self = $(this),
goTo = self.data('goto');
if(typeof goTo !== 'undefined')
{
window.location = goTo;
}
});
}
$('div, a, span').filter('[tappable][data-tappable-role]').on('touchstart', this, nextEvent);