Jquery If/Else始终计算为true
对if/else有点小麻烦似乎总是正确的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
<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')
- 按回车键
- 在下一行中,通过键入
并再次按enter键注销该变量test
[]
这是一个空的jQuery包装集。集合存在,但为空。您可以在这个伪数组上调用.length
方法,就像在常规数组上一样,在这种情况下,您将得到0
test.length // returns 0
第二个需要理解的概念是,truty和falsy值在if
语句中是如何工作的:
如果在If
语句中放入零(0
)或null
或空字符串(“”
),则If
语句将把它减少为false。但是如果您放入一个常规字符串(“hello”
)或一个数字(22
),甚至一个空数组([]
),则if
语句将对其求值为true
将计算为false如果(未定义){…}
将计算为false如果(“”{…}
将计算为true如果(2){…}
将计算为trueif(“hiya”){…}
将计算为true如果([]){…}
[]
)放入if
语句中,它将被视为真实值,并且if
块将运行
解决方案是测试jQuery集的长度,如果为空,将导致零(
0
),这是一个错误值。这是一个常见错误。您需要测试长度
,而不是测试元素的存在,如下所示:
if ($('a[href="/blank"]').length) {...}
有两个概念你需要熟悉,以了解为什么这是可行的
第一个是jQuery包装集的工作方式<代码>$('a'),例如:
使用jQuery选择元素时,即使该元素在页面上不存在,jQuery仍会创建“容器”(伪数组),但它将为空。这可以通过以下几点来证明:
- 打开浏览器的控制台并键入
var test=$('.doesNotExist')
- 按回车键
- 在下一行中,通过键入
并再次按enter键注销该变量test
[]
这是一个空的jQuery包装集。集合存在,但为空。您可以在这个伪数组上调用.length
方法,就像在常规数组上一样,在这种情况下,您将得到0
test.length // returns 0
第二个需要理解的概念是,truty和falsy值在if
语句中是如何工作的:
如果在If
语句中放入零(0
)或null
或空字符串(“”
),则If
语句将把它减少为false。但是如果您放入一个常规字符串(“hello”
)或一个数字(22
),甚至一个空数组([]
),则if
语句将对其求值为true
将计算为false如果(未定义){…}
将计算为false如果(“”{…}
将计算为true如果(2){…}
将计算为trueif(“hiya”){…}
将计算为true如果([]){…}
[]
)放入if
语句中,它将被视为真实值,并且if
块将运行
解决方案是测试jQuery集的长度,如果为空,将导致零(
0
),这是一个错误的值。谢谢您提供的信息。当使用if语句时长度为零时-是否会跳过此操作而根本不渲染?正确。0(零)将转换为false
,并导致跳过if
块。我们得到零是因为语句$('a[href=“/blank”]”)。length
计算为零,计算结果为false
,感谢您提供的信息。当使用if语句时,长度为零时,会得到