假设我这样做:
$(target).blur(function(e){
//do stuff
});
有没有办法获取点击的对象才能触发模糊操作?
我尝试使用e.target
,但这似乎是返回附加到模糊操作的对象而不是单击的对象。
答案 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')
将返回文档中的焦点元素。