关键事件处理程序显示出缓慢的性能



我的示例:

$(document).on('keyup', '[contenteditable=true]', function (e) {
        
    let _this = $(this), text = _this.text();
    if (text.length === 1) {
        let span = $('<span>').text(text);
        _this.html(span);
    }
    console.log(_this.html());
});
[contenteditable=true] {
  border: 1px solid #ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div contenteditable="true"></div>

我的问题:如果我在DIV中输入一些具有正常速度的文本(超过1个字符),则代码可以正常工作。但是,当我尝试以快速键入文本时,没有将<span>标签附加到Div。

我该如何解决?

您可以使用 input事件,而是在交流用户输入时更有效,请查看下面的示例:

$(document).on('input', '[contenteditable=true]', function (e) {
    //Your logic
});

keypress as t.j。Crowder评论的说:

$(document).on('keypress', '[contenteditable=true]', function (e) {
    //Your logic
});

希望这会有所帮助。

$(document).on('input', '[contenteditable=true]', function (e) {
        
    let _this = $(this), text = _this.text();
    if (text.length === 1) {
        let span = $('<span>').text(text);
        _this.html(span);
    }
    console.log(_this.html());
});
[contenteditable=true] {
  border: 1px solid #ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div contenteditable="true"></div>

相关内容

  • 没有找到相关文章

最新更新