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'
焦点事件没有冒泡。谷歌,伙计。到底是谁投的票?