1

我有以下 JSP/HTML 代码:

<dt>Birth Date:</dt>
<dd id="birth-date">-</dd>

但是,当我使用以下 jQuery 时,不会出现警报:

$(document).ready(function() {
    if ($('#birth-date').text() === '-') {
        alert('Hello');
    }
});

我不确定问题可能是什么,是 Twitter Bootstrap 导致的,因为当我查看源代码时,浏览器会显示:

 <dd id="birth-date">


    -

 </dd>

而上面的 DOM 并不是我想的那样。有任何想法吗?

4

3 回答 3

2

您可以尝试使用$.trim()

if ($.trim($('#birth-date').text()) === '-') {

$.trim() 函数从提供的字符串的开头和结尾删除所有换行符、空格(包括不间断空格)和制表符。如果这些空白字符出现在字符串的中间,它们会被保留,Reference

于 2013-11-12T17:11:36.470 回答
0

使用一点正则表达式魔法怎么样?

if ($('#birth-date').text().replace(/\s+/g, '') === '-')

这应该从 中删除所有空格,.text()并将其与-.

于 2013-11-12T17:15:31.123 回答
-1

您确定您的 JSP 看起来像这样并且不包含任何动态标签吗?也许是这样的(伪代码):

<dd id="birth-date">
    ${ foo.getBirthDate() || '-' }
</dd>

因为在这种情况下,您看到的 HTML 是有意义的。Bootstrap 本身无法修改 HTML 源代码,因此它必须是您的服务器端代码。


无论如何,使用当前标记很容易修复:

if ($('#birth-date').text().trim() == '-')

这样你就可以从字符串中删除所有前导/尾随空格,然后得到-你正在寻找的。

于 2013-11-12T17:11:59.950 回答