Как проверить состояние в jquery? - PullRequest
0 голосов
/ 24 апреля 2020

Я создаю дерево js, чтобы отобразить имя пути к папке, и моя проблема заключается в том, как проверить условие, если таблица базы данных status равна 0 (неактивна), а затем покажет переход в js дерево. Иначе таблица status равна 1 (активна), только что вернулась в нормальное состояние. Ниже приведена моя кодировка:

<?php 
   $folderData = mysqli_query($mysql_con,"SELECT * FROM filing_code_management");
   $folders_arr = array();
   while($row = mysqli_fetch_assoc($folderData)){
      $parentid = $row['parentid'];
      if($parentid == '0') $parentid = "#";

      $selected = false;$opened = false;
      if($row['id'] == 2){
         $selected = true;$opened = true;
      }
      $folders_arr[] = array(

         "id" => $row['id'],
         "parent" => $parentid,
         "text" => $row['name'] . ' ' . "<span id='category'>". $row['category']."</span>",
         "category" => $row['category'],
         "status" => $row['status'], // status 0 is inactive, status 1 is active
         "state" => array("selected" => $selected,"opened"=>$opened) 

      );
   }

   ?> 

<script style="text/javascript">
    var StrikeNodes = function(nodelist) {
      var tree = $('#folder_jstree').jstree(true);
      nodelist.forEach(function(n) {
        tree.get_node(n.id).a_attr.style = "text-decoration:" + getStrike(parseInt(n.text.substr(0, 3), 10));
        tree.redraw_node(n.id); //Redraw tree
        StrikeNodes(n.children); //Update leaf nodes
      });
    };

        var getStrike = function(i) {
      if (status = '0' ) {
        return "line-through;";
      }  else {
        return "";
      }
    };

    $('#folder_jstree').bind('load_node.jstree', function(e, data) {
      var tree = $('#folder_jstree').jstree(true);
      StrikeNodes(tree.get_json());
    });
</script>

Теперь в моих выходных данных отображаются все линейные переходы в дереве js, а не обнаружение, которое является активным или неактивным. Output

Мой рабочий код JSFiddle здесь: https://jsfiddle.net/ason5861_cs/9x0dsotz/3/

Надеюсь, кто-то может подсказать мне, в какой части я ошибаюсь.

1 Ответ

1 голос
/ 24 апреля 2020

глядя на ваш код. Вы не сравниваете статус, это должно быть status == '0' вместо status = '0'

, также есть доступная опция, предоставленная jstree. Опция data это может быть что угодно. это метаданные, которые вы хотите присоединить к узлу. Вы сможете получить к нему доступ и изменить его в любое время - это не влияет на визуальные элементы узла.

[{
    "id": "1",
    "parent": "#",
    "text": "100 PENTADBIRAN <span id='category'>JTM<\/span>",
    "category": "JTM",
    "data": { "status": 0 },
    "state": {
        "selected": false,
        "opened": false
    }
}]

var StrikeNodes = function(nodelist) {
  var tree = $('#folder_jstree').jstree(true);
  nodelist.forEach(function(n) {
      tree.get_node(n.id).a_attr.style = "text-decoration:" + getStrike(n.data.status);
      tree.redraw_node(n.id); //Redraw tree
      StrikeNodes(n.children); //Update leaf nodes
  });
};

var getStrike = function(status) {
    if (status == 0) {
       return "line-through;";
    }
    return "";
};

вот я отредактировал вашу скрипку https://jsfiddle.net/Hafizu/1xt7bhem/11/

...