7

可能重复:
焦点和模糊 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);
    }
);

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

4

1 回答 1

21

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

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

希望这会很有用。

你可以试试这段代码:

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);
    }
});
于 2013-01-24T07:45:50.593 回答