 <p>You won't subscribe, you'll just have an observable in your viewmodel that you set to true or false, and the menu item will toggle in response. The disabled member of your menu item will look like this:</p> <pre><code>disabled: function() { return myobservable(); } </code></pre> <p>As James Thorpe commented, you'll want to create a custom binding handler to set up your context menu.</p> <p>It sounds like you're working with several unfamiliar tools. Here is a Fiddle with a minimal example: <a href="http://jsfiddle.net/sv3m7ok8/" rel="nofollow">http://jsfiddle.net/sv3m7ok8/</a></p> <p><strong>Update</strong> It occurred to me that since the context menu doesn't bind to a single element, but uses a selector, it makes more sense to do the binding on the <code>body</code> tag. So an updated example: <a href="http://jsfiddle.net/sv3m7ok8/1/" rel="nofollow">http://jsfiddle.net/sv3m7ok8/1/</a></p> <p><strong>Updated again</strong> I now understand that you are specifically trying to get the menu item to enable/disable while the menu is open (and that it doesn't do that normally). I had to go under the covers to get at the menu item node, and hook up a subscription to set the disabled class on it.</p> <pre><code>init: function (element, data, allbindings, data) { var dynamicDisable = false; $.contextMenu({ selector: '.context-menu-one', callback: function (key, options) { var m = "clicked: " + key; window.console &amp;&amp; console.log(m) || alert(m); }, items: { "edit": { name: "Clickable", icon: "edit", disabled: function (opt, key) { if (!dynamicDisable) { var node = key.items.edit.$node[0]; data.disableMenu.subscribe(function (dis) { $(node)[dis ? 'addClass' : 'removeClass']('disabled') }); dynamicDisable = true; } return data.disableMenu(); } } } }); } </code></pre> <p>My fiddle sets an interval to toggle disableMenu. You can watch the menu item become active and gray.</p> <p><a href="http://jsfiddle.net/sv3m7ok8/3/" rel="nofollow">http://jsfiddle.net/sv3m7ok8/3/</a></p>