Javascript 空contenteditable元素上的布尔值计算为true

Javascript 空contenteditable元素上的布尔值计算为true,javascript,contenteditable,Javascript,Contenteditable,我有一些contenteditable div,具有以下功能: $(".myDiv").on('blur', function() { if ($(this).text()) { // Do something } else { // i.e. $(this) is empty // Do something else } 如果myDiv输入了文本,然后删除了文本,那么这种方法可以很好地工作。

我有一些contenteditable div,具有以下功能:

$(".myDiv").on('blur', function() {
        if ($(this).text()) {

            // Do something

        } else { // i.e. $(this) is empty

            // Do something else
        }
如果myDiv输入了文本,然后删除了文本,那么这种方法可以很好地工作。但是,如果页面加载时myDiv为空,获得焦点,然后在没有输入任何文本的情况下再次丢失,则上述函数的计算结果为true

例如,如果我这样做:

$(".myDiv").on('blur', function() {
            if ($(this).text()) {
                console.log('===== text =====');
                console.log($(this).text());
                console.log(typeof($(this).text()));
            } else {
                console.log('===== empty =====');
                console.log($(this).text());
                console.log(typeof($(this).text()));
            }
然后单击myDiv,输入一个值,然后单击away,然后清除myDiv,然后再次单击away,得到以下结果:

===== text =====
myText
string

===== empty =====
(en empty string)
string
但是,如果我在一个空的myDiv中单击,而该myDiv中还没有文本,则单击离开,而不输入任何内容:

===== text =====


string
为什么会这样

==编辑===

所以我做了一个测试,但它没有我上面描述的问题

==编辑==

我更新了文件以检查长度

==最终编辑==

感谢那些投入时间和思想的人。我最终做了这样的事情:

if ($.trim($(this).text())) {
    // etc etc

删除所有不需要的空白,这是有效的。

jQuery选择器将为您提供一个jQuery对象,它包装HTML元素,而不是实际的HTML元素本身。根据jQuery文档,长度将为您提供“当前匹配的元素数”。在本例中,选择器将为您提供一个元素(myDiv)。这就是为什么长度总是1

相反,您应该访问text属性上的长度,因为这将为您提供正确的长度

$('#2').text($(this).text().length);

查看此

是否可以创建链接是否可以在$处创建演示。text()始终返回字符串。请改为检查。@Broxzier问题不在于它返回字符串,而在于空字符串的计算结果为true而不是false。@moarCoffee小提琴似乎工作正常