<!DOCTYPE html>
<html>
<head>
<title>Jquery context menu</title>
<meta charset="utf-8" />
<link data-require="bootstrap-css@3.3.6" data-semver="3.3.6" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
<link href="https://rawgit.com/Ruud-cb/jQuery-contextMenu/master/dist/jquery.contextMenu.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<br/><br/>
<span class="context-menu-one btn btn-default">right click me</span>
<button class="btn btn-default" onclick="$.loadItemsAsync()">Load Async Promise example, see log</button>
<p>Right click -> Status: Will be loaded and shown after 2 sec.</p>
</div>
<!--scripts-->
<script data-require="jquery@2.2.0" data-semver="2.2.0" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script data-require="bootstrap.js@3.3.6" data-semver="3.3.6" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://rawgit.com/Ruud-cb/jQuery-contextMenu/master/dist/jquery.ui.position.min.js"></script>
<script type="text/javascript" src="https://rawgit.com/Ruud-cb/jQuery-contextMenu/master/src/jquery.contextMenu.js"></script>
<script type="text/javascript" src="https://rawgit.com/Ruud-cb/jQuery-contextMenu/master/src/jquery.contextMenu.js"></script>
<script type="text/javascript" src="script.js"></script>
<link rel="stylesheet" href="style.css" />
</body>
</html>
var $ = jQuery;
$(document).ready(function () {
'use strict';
var errorItems = { "errorItem": { name: "Items Load error" },};//can also be a string
var loadItems = function () {
var dfd = jQuery.Deferred();
setTimeout(function () {
dfd.resolve(subItems);
}, 2000);
//setTimeout(function () {
// dfd.reject(errorItems);
//}, 1000);
return dfd.promise();
};
var subItems = {
"sub1": { name: "Submenu1", icon: "edit" },
"sub2": { name: "Submenu2", icon: "cut" },
};
$.contextMenu({
selector: '.context-menu-one',
build: function ($trigger, e) {
return {
callback: function (key, options) {
var m = "clicked: " + key;
console.log(m);
},
items: {
"edit": { name: "Edit", icon: "edit" },
"cut": { name: "Cut", icon: "cut" },
"status": {
name: "Status",
icon: "delete",
items: loadItems(),
},
"normalSub": {
name: "Normal Sub",
items: {
"normalsub1": { name: "normal Sub 1"},
"normalsub2": { name: "normal Sub 2"},
"normalsub3": { name: "normal Sub 3" },
}
}
}
};
}
});
//normal promise usage example
var completedPromise = function (status) {
console.log("completed promise:", status);
alert("completed promise:");
};
var failPromise = function (status) {
console.log("fail promise:", status);
};
var notifyPromise = function (status) {
console.log("notify promise:", status);
};
$.loadItemsAsync = function() {
console.log("loadItemsAsync");
var promise = loadItems();
$.when(promise).then(completedPromise, failPromise, notifyPromise);
};
});
/* Styles go here */