我正在检查我博客上的一些“阅读更多”链接,并隐藏链接(前两个帖子),或隐藏内容并保留链接。我通过id
语句运行链接'if ... else
属性,如下所示:
$(document).find('.contentclicker').each(function(){
var pt = $(this).parent().attr('id');
if (pt == "postnum1" || "postnum2"){
$(this).hide();
}
else{
$(this).next().hide();
}
});
注意:那里有一些jQuery,但它并不相关。我从调试中知道var pt
正确设置为post_num_1,post_num_2等等 - 但是当它评估post_num_3等等时,它不会转到else
。我已尝试==
和===
等等,我无法弄清楚出了什么问题。
有什么建议吗?
答案 0 :(得分:12)
我很确定你不能在javascript中if (pt == "postnum1" || "postnum2")
。试试if (pt == "postnum1" || pt == "postnum2")
。基本上,即使pt == "postnum1"
的第一个条件为假,它也会将第二个条件视为真,这将避免底部的else
子句。至少,这就是我的想法。
很抱歉,如果我误解了你的问题。
答案 1 :(得分:3)
JavaScript不是严格类型的,它特别意味着它为您的数据类型提供了一些余地,并且总是试图将表达式值强制转换为它认为是您的意图的数据类型。
在你的if语句中,它尝试在||之后转换部分对于布尔值和“postnum2”的转换结果总是如此。
我认为你的意图是(pt == "postnum1" || pt == "postnum2")
答案 2 :(得分:2)
条件“postnum2”的第二部分总是评估为真。你必须将条件转换为第一个答案。你的帖子也说post_num_1,post_num_2等,但是你要检查post_num1。
答案 3 :(得分:2)
而不是(pt == "postnum1" || "postnum2")
试
if ((pt == "postnum1" ) || (pt == "postnum2"))
{
// something
}
你也可以在开关盒中做一些事情(作为替代方案)
switch(pt)
{
case "postnum1":
case "postnum2" : $(this).hide(); break;
default: $(this).next().hide(); break;
}