Jquery 为什么从不计算检查.is(“:visible”)
我想知道为什么在这个特定的函数中从未计算可见性检查。它在其他功能中工作良好。我理解。is':visible'是一个布尔真/假,如果我有下面的代码,它可以正常工作Jquery 为什么从不计算检查.is(“:visible”),jquery,Jquery,我想知道为什么在这个特定的函数中从未计算可见性检查。它在其他功能中工作良好。我理解。is':visible'是一个布尔真/假,如果我有下面的代码,它可以正常工作 if($("#complete").is(':hidden')) { $("#complete").show(); $("#img5").hide(); } else if($("#complete").is(':visible')) { $("#complete").hide(); $(
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
}
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
}
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
if($( ".g_card" ).on('click', function() {
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
}));
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
} /*This if never evaluated after adding other conditions*/ Thanking You In Advance
如果我在检查隐藏之后和检查可见性之前添加更多功能,则不会计算此元素的可见性检查
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
if($( ".g_card" ).on('click', function() {
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
}));
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
} /*This if never evaluated after adding other conditions*/ Thanking You In Advance
如果你修改了格式,你会发现第二个if用分号完成;而else没有它是否属于的
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
if($( ".g_card" ).on('click', function() {
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
}));
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
} /*This if never evaluated after adding other conditions*/ Thanking You In Advance
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
if($( ".g_card" ).on('click', function() {
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
})
); // End If
// Always runs
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
// else to what if?? no if's here
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
}
编辑:MattyMo的解决方案比我的好我找到了一个解决我的问题的方法,这个方法对我想要完成的事情有效。正如我所说,我有一个手风琴类型的应用程序,一次只允许打开一个元素。在允许打开另一个元素之前,应用程序检查元素是否可见。若元素可见,代码将隐藏它。
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
if($( ".g_card" ).on('click', function() {
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
}));
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
} /*This if never evaluated after adding other conditions*/ Thanking You In Advance
我遇到的问题是,一旦检查元素是否隐藏在某个特定函数中,以及它是否隐藏在某个特定函数中,就必须使其可见,因为这是唯一可以看到兄弟元素并能够单击它们来添加和删除类的方法,这些类允许在加号和减号按钮上添加边框和背景色删除颜色边框和背景色,将其设置回原始颜色。
您无法检查可见性并隐藏可见的内容,因为要查看兄弟元素必须可见,但在打开手风琴上的另一个元素之前,我仍然必须检查可见性
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
if($( ".g_card" ).on('click', function() {
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
}));
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
else if($("#complete").is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
} /*This if never evaluated after adding other conditions*/ Thanking You In Advance
if($( ".g_card" ).on('click', function(e) {
e.stopPropagation();
$('#addon_1').addClass('baddon_1add');
$("#gift_occasion").toggle();
}));
$("#g_minus").on('click', function(e){
e.stopPropagation();
$('#addon_1').removeClass('baddon_1add').addClass('.baddon_1');
});
if($("#complete").is(':hidden')) {
$("#complete").show();
$("#img5").hide();
$("#continue").hide();
$("#addtocart").show();
}
else if($('#complete').is(':visible')) {
$("#complete").hide();
$("#img5").show();
$("#continue").show();
$("#addtocart").hide();
}
请贴一个完整的例子。包括你的HTML。你的JS中有很多错误。如果您确切地告诉我们您想要实现什么,那么我们可以帮助您。您在else-If之前有一个有效的If块,因此else-If没有连接到任何If块,这意味着它在语法上无效,在逻辑上无法工作。使用良好的缩进,您将能够快速发现这些问题。JSFIDLE有一个整理按钮,可以更好地缩进代码,并在此处显示此问题:。只是一个性能说明:您是否知道$complete必须在DOM中搜索匹配项。在上面的第一段代码中,这个表达式出现了4次。如果希望代码高效,最好执行一次并将结果保存在变量中。如果$..单击。。。???