2013-02-12 56 views
1

我正在使用jstree库来显示一棵树。中断主循环 - jstree

在下面的代码中,我循环遍历树中的选定节点,并基于某些条件,我将一个变量'allow_edit'分配给一个布尔值。

我想破主循环,如果​​

我尝试使用标签和破环,但是这似乎并没有工作。我正在获取未定义的标签。

loop1: 
$j.each($j("#demo2").jstree("get_selected"), function(index, element) { 

    var selected_node_depth = parseInt($j(element).attr('node_depth')); 
    var allow_edit = false; 


    var array_first_filter = $j.grep(array_first, function(v) { return v[1] != "not detected";}) 
    var array_second_filter = $j.grep(array_first_filter, function(v) { return v[3] > selected_node_depth;}) 


    if (array_second_filter.length === 0 || array_second_filter.length == null) 
    { 
    allow_edit = true; 
    } 
    else{ 
    alert("Confliction exists in your selected terms."); 
    allow_edit = false; 
    //break loop1; /** not working, getting undefined label **/ 
    } 


} 

任何关于如何打破主循环的建议如果'allow_edit = false'?非常感谢

回答

2

如果您传递给.each()的函数返回false,则迭代将停止。

else { 
    allow_edit = false; // pointless since you're about to return ... 
    return false; 
} 

此外,作为一种编程风格的音符,形式的任何建筑:

if (something) { 
    flag = true; 
} 
else { 
    flag = false; 
} 

可以更好地写成简单:

flag = something; 

在JavaScript,以便flag为布尔值(truefalse),您可以这样做:

flag = !!(something); 

两个!(逻辑“非”)运算符强制表达(“东西”)被评价为通过相同的规则的布尔作为时表达式是一个if语句的子句测试中使用。

+0

oh..yes你是对的,好吧,我怎么能错过这个?! – Kim 2013-02-12 14:36:07