比较el.text()===" string"结果为false,即使元素包含" string"

时间:2015-11-04 09:58:58

标签: javascript jquery

在下面的代码中,即使警告告诉我state确实包含字符串payment,也始终执行else而不是if。

var state = $('.check-state').text();
alert(state); // payment
if (state === "payment")
    alert('hello');
else
    alert('not match')

为什么?

1 个答案:

答案 0 :(得分:1)

我猜你的HTML看起来像这样:

<div class="check-state">
    payment
</div>

然后.text()将返回><之间的所有内容,包括空格。所以你得到的是"\n payment\n",而不是"payment"

解决方案是使用jQuerys $.trim()

来修剪空白
var state = $.trim($('.check-state').text());

另外,我建议您使用console.log()代替alert()进行调试。在大多数浏览器中,这将允许您检测错误的位置,因为您可以清楚地看到空白。