3

我有这个代码:(jquery)

    alert($('#feedback').text());
    if ($('#feedback').text() == "") {
        alert("has content");
    } else {
        alert("no content");
    }

我用它来测试任何计划文本内容的#feedback div。然而,无论我如何格式化条件,else 语句总是会触发,无论我是否有内容。

我在哪里错了?

html:

<div id="feedback" class="hide feedback">
    <p>generated message</p>
</div>
4

6 回答 6

3

基于 HTML 示例,我假设当 div 应该为空时,您有类似的情况:

<div id="feedback" class="hide feedback">
    <p></p>
</div>

在那种情况下.text(), div 的不是"",而是"\n\n"(两个换行符)。您需要使用 删除换行符$.trim()<p>(如果有换行符,即使没有标签也是如此。)

if( $.trim( $( '#feedback' ).text() ) == "" ) {
    alert( "no content" );
} else {
    alert( "has content" );
}
于 2012-07-23T14:58:33.783 回答
1

只是为了检查!

检查您的 :$('#feedback').length

if ($('#feedback').length>0  && $.trim($('#feedback').text()) != "") {
    alert("has content");
} else {
    alert("no content"); // or no element
}
于 2012-07-23T14:52:53.787 回答
0

不应该是:

if ($('#feedback').text() != "") {
    alert("has content");
} else {
    alert("no content");
}
于 2012-07-23T14:52:36.717 回答
0

另外的选择:

if ($('#feedback p:empty').length) {
    alert("empty");
} else {
    alert("has content");
}
于 2012-07-23T15:08:02.950 回答
-1

它被还原了...

alert($('#feedback').text());
if ($('#feedback').text() == "") {
    alert("no content");
} else {
    alert("has content");
}

它现在修复了:)

于 2012-07-23T14:52:31.343 回答
-1

您可以使用:

if($('#feedback').is(':empty')) {
   alert("no content");
} else {
   alert("has content");
}
于 2012-07-23T14:59:13.677 回答