Javascript if语句运行不正常
当折叠项目被折叠或展开时,我似乎无法使箭头显示在正确的方向() 代码: 此线路未按预期工作:Javascript if语句运行不正常,javascript,jquery,if-statement,Javascript,Jquery,If Statement,当折叠项目被折叠或展开时,我似乎无法使箭头显示在正确的方向() 代码: 此线路未按预期工作: if($('.projectscontainer').find("div.destarrow").hasClass('arrow-down')) $('.projectscontainer').find('div.destarrow').toggleClass("arrow-down arrow-right"); 单击“全部展开”时,项目应展开(工作),箭头应指向下方(不工作)
if($('.projectscontainer').find("div.destarrow").hasClass('arrow-down'))
$('.projectscontainer').find('div.destarrow').toggleClass("arrow-down arrow-right");
单击“全部展开”时,项目应展开(工作),箭头应指向下方(不工作)。单击“全部折叠”时,应出现相反的情况。例如,如果单击其中一个绿色项目,然后单击“全部展开”,则所单击项目的箭头指向不同的方向 我做错了什么?如果我有一个庞大的列表,这里是否有任何性能问题需要解决?谢谢 这是一份工作清单 实际上,您的问题在于以下代码
$('.projectscontainer').find("div.destarrow").hasClass('arrow-right')
由于$('.projectscontainer')。find(“div.destarrow”)返回箭头元素数组,其中包含一些向右箭头的箭头和一些向下箭头类的箭头,因此始终返回true。我重新分解了代码以使用过滤器。注意:tutiputes的答案是正确的,按照他们的答案去做。 这是一张工作票 您更改了文本,然后检查其以前的状态以相应地执行操作 存储文本,并在更改后再次检查
var currText = $(this).text();
$(this).text(function(i, currentText){
return currentText === 'Expand All' ? 'Collapse All' : 'Expand All';
});
if(currText === 'Expand All'){//Currently collapsed
而且,您的开关是向后的。您希望在折叠时展开,反之亦然
您询问了性能问题
您可能会考虑存储jQuery选择器,这样就不会经常在DOM中扎根。这不是什么大问题,但取决于未来项目的规模,它会派上用场。对我来说很有用(如果你说的是绿色项目旁边的箭头),例如,如果我单击其中一个绿色项目,然后单击“全部展开”,则所单击项目的箭头指向不同的方向。哦,对不起,我错过了“全部展开”链接。看起来你已经有了一个有效的答案。根据我的检查,castis的答案不起作用,所以我更新了我的小提琴。希望能有帮助…好吧,我同意图提普特斯的答案。谢谢你的帮助!还请欣赏有关存储选择器的提示。我不确定这在jQuery中是否有效,我会记住它。
var currText = $(this).text();
$(this).text(function(i, currentText){
return currentText === 'Expand All' ? 'Collapse All' : 'Expand All';
});
if(currText === 'Expand All'){//Currently collapsed