如何在值为0时删除类

时间:2016-02-23 17:44:23

标签: jquery

我一直在寻找,但找不到任何答案!

我有以下代码,我正在查看#balance是否为0,如果是,则应删除class="hidden"

if ($("#balance").length == 0) {
    $("#Reset").removeClass("hidden")
}

<p>Place your bet! Balance: <b><span id="balance"></span>$</b></p>

这是展示问题的codepen

3 个答案:

答案 0 :(得分:0)

if ($("#balance").val() == '0') {
    $("#Reset").removeClass("hidden");
}

答案 1 :(得分:0)

问题在于$("#balance").length,您正在检查元素是否存在,而不是该元素的基础texthtml。由于您的脚本代码无法移除范围&{39} balance&#39;来自DOM,因此表达式$("#balance").length == 0永远不会是true。您可能需要检查基础texthtml是否符合您的要求。

if (!$("#balance").text().length) {
      $("#Reset").removeClass("hidden")
   }

答案 2 :(得分:0)

只需检查updateBalance()功能。

function updateBalance(newBalance) {
    localStorage.setItem('balance', newBalance);
    balance = newBalance;
    if (balance === 0) {
      $('#Reset').removeClass('hidden');
    }
}

更新了codepen

首先,$('#balance').length将始终返回1,因为您的网页上有一个元素id="balance",因此您的if ($('#balance').length == 0)语句永远不会成立。

您可以将其更改为if (parseInt($('#balance').html()) === 0),但这也无法解决您的问题,因为您的if语句就在$(document).ready()函数内部,所以它只被调用一次加载页面时,值为50。

要执行您要执行的操作,您必须在$('#balance')范围发生变化时进行检测。但是,当您调用updateBalance()函数时,您已经拥有了新的余额,因此只需检查该函数就更有意义了。