Here is the extended method 'findItemBy'
<script type="text/javascript">
(function($){
function findItem(target, param){
var result = null;
var fn = $.isFunction(param) ? param : function(item){
for(var p in param){
if (item[p] != param[p]){
return false;;
}
}
return true;
}
function find(menu){
menu.children('div.menu-item').each(function(){
var opts = $(this).data('menuitem').options;
if (fn.call(target, opts) == true){
result = $(target).menu('getItem', this);
} else if (this.submenu && !result){
find(this.submenu);
}
});
}
find($(target));
return result;
}
$.extend($.fn.menu.methods, {
findItemBy: function(jq, param){
return findItem(jq[0], param);
}
})
})(jQuery);
</script>
Usage examples:
var item = $('#mm').menu('findItemBy',{id:'m1'}); // find by id
var item = $('#mm').menu('findItemBy',{href:'window.html'}); // find by href property
// find by custom logic
var item = $('#mm').menu('findItemBy',function(item){
var s = $(item.text).text();
return s == 'M1';
});