如何委托焦点事件?

Kin*_*Kin 6 jquery

可能重复:
聚焦和模糊jQuery事件而不是冒泡

var default_input_value = null;
jQuery('body').on('focus focusout', 'input[type="text"]', function(event){
    if(event.type === 'focus'){
        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);
    }
);
Run Code Online (Sandbox Code Playgroud)

此代码根本不响应该事件.PS重要的是会有input[type="text"],因为在某些情况下jQuery focus也会发生火灾checkbox....

pkt*_*yue 19

.on()jquery文档下,有一个描述:

这些focusblur事件由W3C指定为不冒泡,但jQuery定义了跨浏览器focusinfocusout冒泡的事件.当focusblur用于附加委托事件处理程序时,jQuery映射名称focusinfocusout分别将它们作为和传递.为保持一致性和清晰度,请使用冒泡事件类型名称.

希望这会有用.

你可以试试这段代码:

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);
    }
});
Run Code Online (Sandbox Code Playgroud)