2009-08-24 75 views
2

現在我正在使用Jeditable進行就地編輯功能。 Jeditable有一些很好的選擇,但是(據我所知),它不允許你觸發編輯,除非點擊有問題的元素。jQuery編輯插件,允許您觸發從另一個元素編輯

即,假設我的元素有ID comment。使用Jeditable,開始編輯的唯一方法是點擊comment。我想要的是在comment旁邊放一些小文本(例如「點擊編輯你的評論」),點擊後,將comment變成可編輯的文本字段(並設置保存和取消按鈕等)。

回答

1

查看jQuery的trigger方法。

使用如下代碼:

$('#id-for-text').click(function(){ 
    $('#comment').trigger('click'); 
}); 
+0

其值得注意的是,觸發僅在必要時有自定義用戶定義的處理器。如果你做$(「#comment」),你可以達到與上面相同的效果。click() – 2009-08-24 05:55:36

+0

但是我仍然需要一種方法來使得實際點擊「評論」不會觸發編輯(即,可以觸發編輯模式*只有*當用戶點擊#編號爲文本),對不對? ('#comment')。unbind('click')似乎不起作用 - 該字段在點擊後仍然可以編輯。 – 2009-08-24 06:05:47

+0

添加$('#comment')。unbind('click') – 2009-08-24 06:48:29

1

根據您的上述評論,你可以這樣做:

var editFn = (function(){ return $('#comment').click; })(); 
$('#id-for-text').click(editFn); 
$('#comment').unbind('click'); 

這告訴click事件應該是一樣的評論點擊事件的標籤,然後解除評論上的事件。

不確定解除綁定是否會破壞對editFn的引用,因此包含閉包。

+0

不幸的是'$('#comment')。unbind('click')'似乎不起作用 - 該字段在點擊後仍然可以編輯。即使我做'$(「*」)。unbind()'它仍然是可點擊的(儘管沒有其他的東西,如預期的那樣)。這怎麼可能? – 2009-08-25 03:00:20

+0

嗯唯一的辦法,我可以認爲這仍然是可能的是,如果插件的作者使用.live()事件而不是.click()。你可以嘗試使用(「#comment」)。die('click')而不是解除綁定並告訴我它是如何工作的。確保選擇器與傳遞給可插入插件的選擇器相同。 – 2009-08-25 03:06:38

+0

奇怪 - 它仍然不起作用。用螢火蟲試用http://www.appelsiini.net/projects/jeditable/default.html。即使在執行'$(「*」)。unbind()'和'$(「*」)。die()'後,您仍然可以單擊進行編輯。 – 2009-08-26 01:23:58

5

好的,我破解了這個案子。在this blog post中,作者寫道

您現在可以使用任何自定義事件觸發Jeditable的 。

$(".editable").editable("http://www.example.com/save.php", { 
    event  : "make_editable" 
}); 

所以我這樣做,然後做:

$("#id-for-text").click(function() { 
    $("#comment").trigger('make_editable'); 
    }); 
+0

好工作!很高興爲你解決。也是對未來的信息的有用信息:) – 2009-08-26 01:52:48