Получить объект с щелчком, вызвавший событие jquery blur()
Предположим, что я делаю это:
$(target).blur(function(e){
//do stuff
});
Есть ли способ получить объект, который был нажат, чтобы вызвать действие размытия?
Я попытался использовать e.target
, но похоже, что возвращает объект, прикрепленный к действию размытия, а не щелкнув объект.
Ответы
Ответ 1
Если я правильно понял ваш вопрос, это должно сделать это:
$(function() {
var clicky;
$(document).mousedown(function(e) {
// The latest element clicked
clicky = $(e.target);
});
// when 'clicky == null' on blur, we know it was not caused by a click
// but maybe by pressing the tab key
$(document).mouseup(function(e) {
clicky = null;
});
$(target).blur(function(e) {
console.log(clicky);
});
});
Ответ 2
Трюк состоит в том, чтобы ждать дополнительного тика:
$(el).blur(function (event) {
// If we just hangout an extra tick, we'll find out which element got focus really
setTimeout(function(){
document.activeElement; // This is the element that has focus
},1);
})
Ответ 3
Внутри обработчика событий this
будет элемент, к которому привязано событие, а e.target
будет элементом, который вызвал событие (может быть или не совпадать с this
).
Вы передаете событие blur
, а не событие click
. Итак, внутри вашего мероприятия у вас будет элемент, который вы blur
ed. Если вам нужен элемент click
ed, вам понадобится другое событие, чтобы получить это.
blur
может быть вызван другими событиями, такими как фокусировка; не просто нажимая на что-то. Таким образом, нет способа получить элемент, который "вызвал размытие".
Ответ 4
Использование этой функции blur
обработчика даст вам элемент blured
.
$(target).blur(function(e){
var bluredElement = this; // dom element
// To make a jQuery object
var bluredElement = $(this);
});
В событии blur
вы не можете поймать элемент с щелчком. Для получения элемента click
ed вам потребуется click
событие. Например:
$(element).click(function() {
var clickedElement = this;
});
И чтобы получить сфокусированный элемент, вы можете использовать селектор :focus
, например: $(':focus')
, вернет вам сфокусированный элемент в документе.