如何在JQuery中使用replaceWith()的blur()和keypress()事件。 我在下面尝试了这个代码,它适用于blur(),没有任何错误,只是触发了一个单词' undefined'但当我按下回车键时,我收到了这个错误:
"未捕获的DOMException:无法执行' replaceChild' on'节点':要删除的节点不再是此节点的子节点。也许它被移动了一个模糊的'事件处理程序?"
这是我的代码:
$('body').on('blur keypress', 'input', function (e) {
if (e.type === 'focusout' || e.keyCode === 13) {
$(this).replaceWith('<strong>' + $(this).val() + '</strong>');
}
});
答案 0 :(得分:1)
按下回车键后,元素失去焦点,即当它被移除时会模糊,并触发一个新事件,但是当它触发时,该元素不再存在,因此出现错误。
您可以通过拆分条件来修复它,只需在按下回车键时触发blur
事件
$('body').on('blur keypress', 'input', function (e) {
if ( e.type === 'focusout' ) {
$(this).replaceWith('<strong>' + $(this).val() + '</strong>');
}
if ( e.keyCode === 13 ) {
$(this).trigger('blur')
}
});