打破主循环 - jstree

时间:2013-02-12 14:27:32

标签: javascript jstree

我正在使用jstree库来显示树。

在下面的代码中,我循环遍历树中的选定节点,并根据某些条件,我将变量'allow_edit'赋值为布尔值。

如果'allow_edit = false'.

,我想打破主循环

我尝试使用标签并打破循环,但这似乎不起作用。我得到了未定义的标签。

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'有关如何打破主循环的任何建议?非常感谢

1 个答案:

答案 0 :(得分: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);

两个!(逻辑“非”)运算符强制将表达式(“something”)作为布尔值计算,其规则与该表达式是{{1的test子句时使用的规则相同声明。