code: function(e) {
              e.stopPropagation();
              var opt = $(this).data('contextMenu') || {};
  
              // obtain currently selected menu
              if (opt.$selected) {
                  var $s = opt.$selected;
                  opt = opt.$selected.parent().data('contextMenu') || {};
                  opt.$selected = $s;
              }
              
              var $children = opt.$menu.children(),
                  $prev = !opt.$selected || !opt.$selected.prev().length ? $children.last() : opt.$selected.prev(),
                  $round = $prev;
              
              // skip disabled
              while ($prev.hasClass('disabled') || $prev.hasClass('not-selectable')) {
                  if ($prev.prev().length) {
                      $prev = $prev.prev();
                  } else {
                      $prev = $children.last();
                  }
                  if ($prev.is($round)) {
                      // break endless loop
                      return;
                  }
              }
              
              // leave current
              if (opt.$selected) {
                  handle.itemMouseleave.call(opt.$selected.get(0), e);
              }
              
              // activate next
              handle.itemMouseenter.call($prev.get(0), e);
              
              // focus input
              var $input = $prev.find('input, textarea, select');
              if ($input.length) {
                  $input.focus();
              }
          }
docs: select previous possible command in menu