Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery If/Else始终计算为true_Jquery_If Statement - Fatal编程技术网

Jquery If/Else始终计算为true

Jquery If/Else始终计算为true,jquery,if-statement,Jquery,If Statement,对if/else有点小麻烦似乎总是正确的 <a id="test" class="art-bottom detailvid" href="/redblank" target="_blank">Check-In Video</a> $(document).ready(function() { if ($('a[href="/blank"]')) { $( "a" ).append( '<img src="http://www.cli

对if/else有点小麻烦似乎总是正确的

<a id="test" class="art-bottom detailvid" href="/redblank" target="_blank">Check-In Video</a>

$(document).ready(function() {      
    if ($('a[href="/blank"]')) {
       $( "a" ).append( '<img src="http://www.clipartbest.com/cliparts/Kcn/MGE/KcnMGEd9i.png" height="28px" width="28px">' );
    } else {
      $( "a" ).append( '<img src="http://www.clipartbest.com/cliparts/McL/L7p/McLL7pkKi.png" height="28px" width="28px">' );
    }    
});

$(文档).ready(函数(){
如果($('a[href=“/blank”]')){
$(“a”)。附加(“”);
}否则{
$(“a”)。附加(“”);
}    
});
因此,无论我制作什么
href
它都会显示第一张照片


问题是什么?

您应该在if语句中检查返回对象的长度。您还应该将if语句中使用的attr href的值更改为“/redblank”:

if($('a[href=“/redblank”].length){
$(“a”)。附加(“”);
}否则{
$(“a”)。附加(“”);
}

您应该在if语句中检查返回对象的长度。您还应该将if语句中使用的attr href的值更改为“/redblank”:

if($('a[href=“/redblank”].length){
$(“a”)。附加(“”);
}否则{
$(“a”)。附加(“”);
}

您可以像这样检查条件

if ($('a').attr('href') == "/blank") {
   $( "a" ).append( '<img src="http://www.clipartbest.com/cliparts/Kcn/MGE/KcnMGEd9i.png" height="28px" width="28px">' );
} else {
  $( "a" ).append( '<img src="http://www.clipartbest.com/cliparts/McL/L7p/McLL7pkKi.png" height="28px" width="28px">' );
}
if($('a').attr('href')==“/blank”){
$(“a”)。附加(“”);
}否则{
$(“a”)。附加(“”);
}

您可以像这样检查条件

if ($('a').attr('href') == "/blank") {
   $( "a" ).append( '<img src="http://www.clipartbest.com/cliparts/Kcn/MGE/KcnMGEd9i.png" height="28px" width="28px">' );
} else {
  $( "a" ).append( '<img src="http://www.clipartbest.com/cliparts/McL/L7p/McLL7pkKi.png" height="28px" width="28px">' );
}
if($('a').attr('href')==“/blank”){
$(“a”)。附加(“”);
}否则{
$(“a”)。附加(“”);
}

这是一个常见的错误。您需要测试
长度
,而不是测试元素的存在,如下所示:

if ($('a[href="/blank"]').length) {...}
有两个概念你需要熟悉,以了解为什么这是可行的

第一个是jQuery包装集的工作方式<代码>$('a'),例如:

使用jQuery选择元素时,即使该元素在页面上不存在,jQuery仍会创建“容器”(伪数组),但它将为空。这可以通过以下几点来证明:

  • 打开浏览器的控制台并键入
    var test=$('.doesNotExist')
  • 按回车键
  • 在下一行中,通过键入
    test
    并再次按enter键注销该变量
你会看到:

[]
这是一个空的jQuery包装集。集合存在,但为空。您可以在这个伪数组上调用
.length
方法,就像在常规数组上一样,在这种情况下,您将得到
0

test.length // returns 0
第二个需要理解的概念是,truty和falsy值在
if
语句中是如何工作的:

如果在
If
语句中放入零(
0
)或
null
或空字符串(
“”
),则
If
语句将把它减少为false。但是如果您放入一个常规字符串(
“hello”
)或一个数字(
22
),甚至一个空数组(
[]
),则
if
语句将对其求值为true

  • 如果(未定义){…}
    将计算为false
  • 如果(“”{…}
    将计算为false
  • 如果(2){…}
    将计算为true
  • if(“hiya”){…}
    将计算为true
  • 如果([]){…}
    将计算为true
如您所见,如果将空jQuery集(
[]
)放入
if
语句中,它将被视为真实值,并且
if
块将运行


解决方案是测试jQuery集的长度,如果为空,将导致零(
0
),这是一个错误值。

这是一个常见错误。您需要测试
长度
,而不是测试元素的存在,如下所示:

if ($('a[href="/blank"]').length) {...}
有两个概念你需要熟悉,以了解为什么这是可行的

第一个是jQuery包装集的工作方式<代码>$('a'),例如:

使用jQuery选择元素时,即使该元素在页面上不存在,jQuery仍会创建“容器”(伪数组),但它将为空。这可以通过以下几点来证明:

  • 打开浏览器的控制台并键入
    var test=$('.doesNotExist')
  • 按回车键
  • 在下一行中,通过键入
    test
    并再次按enter键注销该变量
你会看到:

[]
这是一个空的jQuery包装集。集合存在,但为空。您可以在这个伪数组上调用
.length
方法,就像在常规数组上一样,在这种情况下,您将得到
0

test.length // returns 0
第二个需要理解的概念是,truty和falsy值在
if
语句中是如何工作的:

如果在
If
语句中放入零(
0
)或
null
或空字符串(
“”
),则
If
语句将把它减少为false。但是如果您放入一个常规字符串(
“hello”
)或一个数字(
22
),甚至一个空数组(
[]
),则
if
语句将对其求值为true

  • 如果(未定义){…}
    将计算为false
  • 如果(“”{…}
    将计算为false
  • 如果(2){…}
    将计算为true
  • if(“hiya”){…}
    将计算为true
  • 如果([]){…}
    将计算为true
如您所见,如果将空jQuery集(
[]
)放入
if
语句中,它将被视为真实值,并且
if
块将运行


解决方案是测试jQuery集的长度,如果为空,将导致零(
0
),这是一个错误的值。

谢谢您提供的信息。当使用if语句时长度为零时-是否会跳过此操作而根本不渲染?正确。0(零)将转换为
false
,并导致跳过
if
块。我们得到零是因为语句
$('a[href=“/blank”]”)。length
计算为零,计算结果为
false
,感谢您提供的信息。当使用if语句时,长度为零时,会得到