簡體   English   中英

事件委托問題

[英]Issue with event delegation

表格填充后,我正在嘗試克隆表格。 在td內,我放置了一些輸入和textarea標簽。 我的問題是表中的內容未克隆。 我曾嘗試使用事件委托,但似乎我做錯了事。 這是JSfiddle,在表中寫一些東西,然后按clone.`` http://jsfiddle.net/no84bror/2/

  $("#clonetable").on('click','textarea',function(){
    var tempTable = $('#masterTable');
    var temClone = $("<div/>").append(tempTable.clone()).html(); 
   // alert(temClone);
    var rep = temClone.replace("textarea","p");
    $("#a").html(rep);
    });

這是一個jquery錯誤-深度克隆不適用於textareas http://bugs.jquery.com/ticket/3016它最初在Firefox中是一個問題,但在Chrome中顯然是相同的。

“當前行為已在api.jquery.com上進行了記錄,當然也可以在此處進行記錄。可以使用插件來提供所請求的行為。該票證被標記為patchwelcome,但需要注意的是,修復jQuery內部這種邊緣情況會導致性能下降90不需要的時間百分比。”

以下代碼可以工作並復制輸入字段的內容,但是由於上述錯誤,您將不得不自己復制textareas的內容或使用插件。

$("#clonetable").on('click', function(){
     $("#a").html($('#masterTable').clone());
});

您可以嘗試使用.clone( [withDataAndEvents][, deepWithDataAndEvents] ) ,換句話說,使用.clone(true, true) ,但這沒什么區別。


這是代碼,包括復制textarea內容的技巧:

 $("#clonetable").on('click',function(){
    $("#a").html($('#masterTable').clone());
    var my_textareas     = $('#masterTable textarea').slice(2,4);
    var result_textareas = $("#a textarea");

    for (var i = 0, l = my_textareas.length; i < l; ++i){
        $(result_textareas[i]).val($(my_textareas[i]).val());
    }
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM