Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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
Javascript if语句运行不正常_Javascript_Jquery_If Statement - Fatal编程技术网

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