如果jquery中的语句不起作用

时间:2016-11-28 23:28:43

标签: c# jquery asp.net-mvc

alert(x)为false。但由于某种原因,它不会进入if语句?有什么想法吗?

HTML

 @{bool x = false;
            foreach (var c in Model.Cleaner.TimeConfirmations.Where(l => l.date.ToShortDateString() == DateTime.Now.ToShortDateString() || l.date.ToShortDateString() == DateTime.Now.AddDays(1).ToShortDateString()))
            {
                     x = true;
            }
            <span class="ifAvailable" data-confirmationchecker="@x" value="15">@x</span>
           }

Jquery的

var x = $(".ifAvailable").data('confirmationchecker')
alert(x);
if ( x == false) {
    alert("hi")
}

3 个答案:

答案 0 :(得分:6)

数据属性can only contain strings

  

data- *属性由两部分组成:

     
      
  1. 属性名称不应包含任何大写字母,并且必须至少在前缀“data - ”之后的一个字符
  2.   
  3. 属性值可以是任何字符串
  4.   

所以你要将字符串“false”与Boolean false进行比较,这是不一样的。

而不是

if (x == false)

使用

if (x == "false")

或者,您可以使用this technique

var x = ($(".ifAvailable").data('confirmationchecker') == "true");
alert(x);
if ( x == false) {
    alert("hi")
}

答案 1 :(得分:1)

你的x是一个字符串,将值转换为布尔值,然后进行检查

var x = $(".ifAvailable").data('confirmationchecker')
alert(x);
if (JSON.parse(x) == false) {
    alert("hi")
} 

How can I convert a string to boolean in JavaScript?

答案 2 :(得分:0)

似乎x的值是“false”字符串类型,请尝试:

if ( x == "false") {
    alert("hi")
}

或将变量x转换为bool类型。