Сейчас у меня есть этот код:
$('.a').mouseenter(function(){
var $this = $(this);
clearTimeout($this.data('timerMouseleave'));
$this.css('border', 'solid 1px #444444')
}).mouseleave(function(){
var $this = $(this);
var timer = setTimeout($.proxy(function(){
$this.css('border', 'solid 1px #dddddd')
}, this), 1000)
$this.data('timerMouseleave', timer)
}).click(function(){
var $this = $(this);
$this.css('border', 'solid 1px black')
$this.off('mouseenter mouseleave');
})
Я хочу добавить красную рамку только в случае повторного входа в div, пока время ожидания еще не истекло. (если возможно, в этом случае также включите звук воспроизведения, например, aaa.wav).
Мне нужно оставить остальную часть этого поведения точно такой, какая она есть, что означает, что красная рамка обычно должна вернуться к умолчанию после тайм-аута.
пояснение:
тайм-аут/задержка срабатывает после выхода из мыши и длится 1 секунду.
- текущая ситуация: если вы снова войдете в div до истечения 1 секунды, тайм-аут будет удален, а затем снова запустится после еще одного выхода из мыши
- нужная ситуация: если вы снова войдете в div до истечения 1 секунды, граница станет красной, время ожидания будет удалено, а затем снова сработает после еще одного выхода из мыши
timerMouseleave
из.data()
. Таким образом, еслиtimerMouseleave
существует в.data()
элемента, это означает, что тайм-аут не из-за этого. (Надеюсь, я правильно понял ваш вопрос) - person naor   schedule 27.08.2013