現在我正在使用Jeditable進行就地編輯功能。 Jeditable有一些很好的選擇,但是(據我所知),它不允許你觸發編輯,除非點擊有問題的元素。jQuery編輯插件,允許您觸發從另一個元素編輯
即,假設我的元素有ID comment
。使用Jeditable,開始編輯的唯一方法是點擊comment
。我想要的是在comment
旁邊放一些小文本(例如「點擊編輯你的評論」),點擊後,將comment
變成可編輯的文本字段(並設置保存和取消按鈕等)。
現在我正在使用Jeditable進行就地編輯功能。 Jeditable有一些很好的選擇,但是(據我所知),它不允許你觸發編輯,除非點擊有問題的元素。jQuery編輯插件,允許您觸發從另一個元素編輯
即,假設我的元素有ID comment
。使用Jeditable,開始編輯的唯一方法是點擊comment
。我想要的是在comment
旁邊放一些小文本(例如「點擊編輯你的評論」),點擊後,將comment
變成可編輯的文本字段(並設置保存和取消按鈕等)。
根據您的上述評論,你可以這樣做:
var editFn = (function(){ return $('#comment').click; })();
$('#id-for-text').click(editFn);
$('#comment').unbind('click');
這告訴click事件應該是一樣的評論點擊事件的標籤,然後解除評論上的事件。
不確定解除綁定是否會破壞對editFn的引用,因此包含閉包。
不幸的是'$('#comment')。unbind('click')'似乎不起作用 - 該字段在點擊後仍然可以編輯。即使我做'$(「*」)。unbind()'它仍然是可點擊的(儘管沒有其他的東西,如預期的那樣)。這怎麼可能? – 2009-08-25 03:00:20
嗯唯一的辦法,我可以認爲這仍然是可能的是,如果插件的作者使用.live()事件而不是.click()。你可以嘗試使用(「#comment」)。die('click')而不是解除綁定並告訴我它是如何工作的。確保選擇器與傳遞給可插入插件的選擇器相同。 – 2009-08-25 03:06:38
奇怪 - 它仍然不起作用。用螢火蟲試用http://www.appelsiini.net/projects/jeditable/default.html。即使在執行'$(「*」)。unbind()'和'$(「*」)。die()'後,您仍然可以單擊進行編輯。 – 2009-08-26 01:23:58
好的,我破解了這個案子。在this blog post中,作者寫道
您現在可以使用任何自定義事件觸發Jeditable的 。
$(".editable").editable("http://www.example.com/save.php", { event : "make_editable" });
所以我這樣做,然後做:
$("#id-for-text").click(function() {
$("#comment").trigger('make_editable');
});
好工作!很高興爲你解決。也是對未來的信息的有用信息:) – 2009-08-26 01:52:48
其值得注意的是,觸發僅在必要時有自定義用戶定義的處理器。如果你做$(「#comment」),你可以達到與上面相同的效果。click() – 2009-08-24 05:55:36
但是我仍然需要一種方法來使得實際點擊「評論」不會觸發編輯(即,可以觸發編輯模式*只有*當用戶點擊#編號爲文本),對不對? ('#comment')。unbind('click')似乎不起作用 - 該字段在點擊後仍然可以編輯。 – 2009-08-24 06:05:47
添加$('#comment')。unbind('click') – 2009-08-24 06:48:29