在函数上调用 Editinplace jquery 插件而不是单击

发布于 2024-11-04 08:59:16 字数 353 浏览 5 评论 0原文

我正在使用 jQuery editinPlace 插件,就地编辑的默认方法是在选择器上使用单击事件,但我尝试执行的方法是通过上下文菜单调用函数“rename();”。那么如何阻止点击事件的内联编辑。请分享一些关于如何做到这一点的想法......

$('.context').editInPlace({ 
        callback: function(idOfEditor) {
        var renameUrl = "http://www.google.com/"+tablerowId+"/"+enteredText+"";
        return enteredText;
        }
    });

I am using jQuery editinPlace plugin, the default way of doing edit in place is using a click event on a selector, but the way I am trying to do is through context menu which calls a function "rename();". So how do I block the inline edit on click event. Please share some idea on how to do this...

$('.context').editInPlace({ 
        callback: function(idOfEditor) {
        var renameUrl = "http://www.google.com/"+tablerowId+"/"+enteredText+"";
        return enteredText;
        }
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

匿名的好友 2024-11-11 08:59:16

打开 /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);

现在,在上下文菜单函数的单击事件中,调用此 >

$("#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);
}

效果就像一个魅力!

编辑:

确保您不允许用户通过单击段落本身来激活编辑器>使用此代码:

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
    });

Open the /jquery.editinplace.js source file. (Online version > http://code.google.com/p/jquery-in-place-editor/source/browse/trunk/lib/jquery.editinplace.js)

In the first function declaration $.fn.editInPlace Line#26, change the following line :

new InlineEditor(settings, dom).init();

into >

dom.theEditor = new InlineEditor(settings, dom);
dom.theEditor.init();
dom.data("theEditor", dom.theEditor);

Now inside the click event of your context menu function, call this >

$("#myContextMenuElement").live("click", function (e) {
                    //your other code
                    rename(e); //you need to pass the event argument to it now 
});

make sure the pass the 'e' into it.

and in the rename function >

function rename(e) { 
   $("#myElementToEditInPlace").data("theEditor").openEditor(e);
}

works like a charm !

EDIT:

To ensure that you don't allow user to active editor by clicking on the para itself > use this code :

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;
    } 
};

and add the delegates in your initialization>

$('.context').editInPlace({ 
        callback: function(idOfEditor) {
           var renameUrl = "http://www.google.com/"+tablerowId+"/"+enteredText+"";
            return enteredText;
        },
        delegate: del
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文