0

テーブルの各セルに自動保存を実装し、そのセルが最後の行の最後のセルである場合は新しい行を追加する必要がある機能に取り組んでいます。新しく複製された行にも、同じバインドされたぼかしイベントが含まれている必要があります。新しい行を追加できますが、イベントがトリガーされません。これがコードです..長い間立ち往生しているのを助けてください..

$("#myTable1").live("blur", function(){
         var elementValue = document.getElementById("<%=count%>").value.toString();
         var value = $("#<%=count%>_hidden").attr('value').toString();
         var qualValue = "<%=qualValue %>";
    var sequenceNumber = "<%=sequenceNumber %>";
    var parentAttrbtInstId = "<%=parentAttrbtInstId %>";
    var parentId = "<%=parentId %>";
    var attrbtId = "<%=attrbtId %>";
    var attrbtInstId =  $("#<%=count%>_hidden").attr('attrbtInstId').toString();
    var rootId = "<%=rootId %>";
    var itemId = "<%=item.getItemId()%>";
    var currentCount = "<%=count%>";
    var cellCount = "<%=cellLimit%>";
    var rowId = "row_<%=rowCounter%>";
    var rowCount = <%=rowCounter%>;



      if(elementValue.toLowerCase() != value.toLowerCase()){
         $.ajax({
           url: "<portlet:resourceURL id='autoSaveAction' />",
             type: 'POST',
             dataType: 'json',
             data: { elementValue:elementValue,qualValue:qualValue,sequenceNumber:sequenceNumber,parentAttrbtInstId:parentAttrbtInstId,parentId:parentId,attrbtId:attrbtId,
              attrbtInstId:attrbtInstId,rootId:rootId,itemId:itemId},
             success : function(response) {
                 if (response.status == "SUCCESS") {
                    jsonstr=JSON.stringify(response.result);
 var temp=JSON.parse(jsonstr);
 $("#<%=count%>_hidden").attr('attrbtInstId',temp.attrInstId);
 document.getElementById("<%=count%>_hidden").value = temp.attrValue;
 if(currentCount == cellCount){
 cloneRow = $("#myTable1 tr:last").clone(true);

     cloneRow.attr({
       'id': function(_, id) { 
 return "row_"+(rowCount+1);
       }            
     }).end().appendTo("#myTable1");

 cloneRow.find("input").each(function() {
     $(this).attr({
       'id': function(_, id) { 
 if (id.indexOf("hidden")!= -1){
 return currentCount + "_hidden";
 }else{
        return ++currentCount;
 }
       }             
     });
   }).end().appendTo("#myTable1");
 cloneRow.find("select").each(function() {
     $(this).attr({
       'id': function(_, id) {
       if (id.indexOf("hidden")!= -1){
 return currentCount + "_hidden";
 }else{
        return ++currentCount;
 }
 }              
     });
   }).end().appendTo("#myTable1");
 cloneRow.find("textarea").each(function() {
     $(this).attr({
       'id': function(_, id) {
        if (id.indexOf("hidden")!= -1){
 return currentCount + "_hidden";
 }else{
        return ++currentCount;
 } 
       }              
     });
   }).end().appendTo("#myTable1");
 }

 } else {
      }
      },
     error:function (xhr, ajaxOptions, thrownError){ 

     }
         });
          }
     });
         }); 
4

1 に答える 1

0

テーブル内のすべての要素にリスナーを持たせたい場合は、最初にすべての要素にクラス (「table-elem」など) を指定し、次のようにリスナーをアタッチする必要があります。

   $("#myTable1").on("blur", ".table-elem", function() {

        //your function you want to run
   });
于 2012-08-10T23:41:13.817 に答える