2012-07-30 45 views
1

我使用http://www.arashkarimzadeh.com/jquery/7-editable-jquery-plugin.html edit-inplace插件。jQuery編輯原地奇怪行爲

對於單個可編輯元素,它工作正常,但我的項目上有很多。當我點擊一個元素會發生以下情況:

enter image description here

的實際工作文本消失。將出現一個<input>元素。我所做的一切是

$('th,td').editable(); 

但表是動態加載到DOM這樣:

$('#id').load('template.html', function() { 
    $('th,td').editable(); 
}); 

任何想法,這裏有什麼問題?你有一個想法如何解決這個問題?

http://jsfiddle.net/2gYw2/6/(不工作) - 添加元素並單擊編輯它,然後單擊td或th查看問題。

+1

如果你製作一個演示http://jsfiddle.net,它會更容易幫助。或者鏈接到至少發生行爲的頁面(雖然不是最佳)。 – 2012-07-30 15:07:19

+0

這是否意味着它可以正常工作,如果表不是動態加載的? – JJJ 2012-07-30 15:10:03

+0

你可以寫你的th和td區域的HTML標記嗎? – Rodik 2012-07-30 15:19:55

回答

1

實際上你應該調用一次可編輯的方法,不要再多了。 我發現了2個可能性來解決這個問題(也許有更多的解決方案)。

  1. 您創建一個數組並存儲已用editable()調用的對象。
  2. 你添加一個變量標誌的編輯調用jQuery對象中

我傾向於第二種方案,因爲我發現它更容易使用。我只是添加一個新的功能jquery做到這一點。

編輯:

我一類到HTML元素替換變量。

(function($){ 
    $.fn.refreshEditable = function(){ 
     $(this).each(function(){ 
      if(!$(this).hasClass("not-editable")){ 
       $(this).addClass("not-editable"); 
       $(this).editable(); 
      } 
     }); 
    }   
})(jQuery); 


$('th,td,h2').refreshEditable(); 

$('#addTable').click(function(){ 
    $('body').append("<div><h2>Add element</h2></div>"); 
    $('th,td,h2').refreshEditable(); 
}); 

我認爲這樣做不錯,但它的工作原理。在生活中的例子here

+0

你可以把這個在一個jsfiddle,因爲我試過你的代碼,它並沒有爲我工作 – 2012-08-16 20:51:39

+0

http://jsfiddle.net/charlesjourdan/fZq5X/3/ – 2012-08-16 20:56:21

+0

偉大的,它的作品!謝謝! :) – 2012-08-16 21:02:06