Jquery 如何委派焦点事件?
可能重复:Jquery 如何委派焦点事件?,jquery,Jquery,可能重复: var default_input_value = null; jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){ if(event.type === 'focusin'){ default_input_value = jQuery(this).val(); jQuery(this).val(''); }else if(event.t
var default_input_value = null;
jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){
if(event.type === 'focusin'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout'){
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
});
此代码根本不响应事件。
附笔。
重要的是要有输入[type=“text”]
,因为在某些情况下,jQuery focus
也会激发复选框 在jquery文档下,有一个描述:
var default_input_value = null;
jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){
if(event.type === 'focusin'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout'){
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
});
W3C将focus
和blur
事件指定为不冒泡,但jQuery定义了不冒泡的跨浏览器focusin
和focusout
事件。当使用focus
和blur
附加委托事件处理程序时,jQuery映射名称并分别作为focusin
和focusout
传递它们。为保持一致性和清晰性,请使用冒泡事件类型名称
var default_input_value = null;
jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){
if(event.type === 'focusin'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout'){
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
});
希望这会有用
var default_input_value = null;
jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){
if(event.type === 'focusin'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout'){
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
});
您可以尝试以下代码:
var default_input_value = null;
jQuery('body').on('focusin focusout', 'input[type="text"]', function(event){
if(event.type === 'focusin'){
default_input_value = jQuery(this).val();
jQuery(this).val('');
}else if(event.type === 'focusout'){
if(jQuery(this).val().length === 0)
jQuery(this).val(default_input_value);
}
});
试试focusin
看看这是否有效,或者可能是事件。stopPropagation()
default\u input\u value
似乎保留最后一个聚焦输入的值,而不是每个值。您正在尝试解决一些水印/占位符问题吗?@elclars谢谢,伙计,focus
返回focusin
@Stefan,不,问题出在event.type=='focus'
焦点事件没有冒泡。谷歌,伙计。到底是谁投的票?