1

我正在使用 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'?非常感谢

4

1 回答 1

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

于 2013-02-12T14:30:54.687 回答