Откройте исходный файл /jquery.editinplace.js. (Онлайн версия> http://code.google.com/p/jquery-in-place-editor/source/browse/trunk/lib/jquery.editinplace.js)
В первом объявлении функции $.fn.editInPlace
Строка № 26 измените следующую строку:
new InlineEditor(settings, dom).init();
в>
dom.theEditor = new InlineEditor(settings, dom);
dom.theEditor.init();
dom.data("theEditor", dom.theEditor);
Теперь внутри события click вашей функции контекстного меню, вызовите это>
$("#myContextMenuElement").live("click", function (e) {
//your other code
rename(e); //you need to pass the event argument to it now
});
удостоверьтесь, что передали 'e' в него.
и в функции переименования>
function rename(e) {
$("#myElementToEditInPlace").data("theEditor").openEditor(e);
}
работает как шарм!
EDIT:
Чтобы убедиться, что вы не разрешаете пользователю активный редактор, нажав на сам пункт> используйте этот код:
var myDelegate = {
shouldOpenEditInPlace: function (a, b, c) {
if (c.target.id != "idOfYourContextElement") { //if the edit was not invoked through the context menu option
return false; //cancel the editor open event
}
return true;
}
};
и добавьте делегатов в вашу инициализацию>
$('.context').editInPlace({
callback: function(idOfEditor) {
var renameUrl = "http://www.google.com/"+tablerowId+"/"+enteredText+"";
return enteredText;
},
delegate: del
});