Подтвердить что ты не робот

Получить объект с щелчком, вызвавший событие jquery blur()

Предположим, что я делаю это:

$(target).blur(function(e){
  //do stuff
});

Есть ли способ получить объект, который был нажат, чтобы вызвать действие размытия?

Я попытался использовать e.target, но похоже, что возвращает объект, прикрепленный к действию размытия, а не щелкнув объект.

4b9b3361

Ответ 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'), вернет вам сфокусированный элемент в документе.