获取触发jquery blur()事件的单击对象

时间:2012-07-18 15:10:42

标签: javascript jquery events javascript-events onblur

假设我这样做:

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

有没有办法获取点击的对象才能触发模糊操作?

我尝试使用e.target,但这似乎是返回附加到模糊操作的对象而不是单击的对象。

4 个答案:

答案 0 :(得分:40)

诀窍是等一下额外的打勾:

$(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);
})

答案 1 :(得分:35)

如果我理解你的问题,应该这样做:

$(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 :(得分:7)

在事件处理程序中,this将是事件绑定的元素,e.target将是触发事件的元素(可能与this可能相同或不同)。

您正在处理blur事件,而不是click事件。因此,在您的活动中,您将拥有blur编辑的元素。如果你想要click ed元素,你需要另一个事件来获得它。

blur可以由其他事件触发,例如聚焦某些事物;不只是点击某事。所以,没有办法让元素“引起模糊”。

答案 3 :(得分:1)

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')将返回文档中的焦点元素。