2016-09-01 5 views
1

html 테이블에서 한 행을 클릭하면 작업 목록을 추가해야합니다. knockout js를 사용하고 있습니다. 문제는 난 그냥 내 데이터에서 마지막 작업을 추가하고 내 요소 내에서 새로운 TR을 추가해야한다는 것입니다. "$ taskSelected" 각 작업에 대해. 여기에 내 코드HTML 요소가 포함 된 JS var 내부에 HTML 코드 추가

self.retrieveTask = function(data, event) { 
       if (event.type=="click") { 
        var id = data.Id; 
        var $taskSelected = event.currentTarget.parentElement.nextElementSibling; 
        $.get("@Url.Action("Method", "Controller")", { id: id }) 
         .done(function(data) { 
          $.each(data, function(key, value) { 
           var html = "<tr><td>" + 
            "</td>" + 
            "<td>" + 
            " <div >" + 
            + value.Type + 
            "</div> " + 
            "</td>" + 
            "<td>" + 
            " <div >" + 
            value.Id + 
            "</div> " + 
            "</td>" + 
            "</tr>"; 
           $taskSelected.innerHTML=html; 

          }); 

         }).fail(function() { 
          alert("error"); 
         }); 
       }; 

      } 

taskSelected가 다른 행 "<tr> </tr>"를 포함하는 VAR $입니다 기본적 II는 중첩 행합니다.

self.retrieveTask = function(data, event) { 
      if (event.type=="click") { 
       var id = data.Id; 
       var $taskSelected = event.currentTarget.parentElement.nextElementSibling; 
       $.get("@Url.Action("Method", "Controller")", { id: id }) 
        .done(function(data) { 
         var html = ""; 
         $.each(data, function(key, value) { 
          html += "<tr><td>" + 
           "</td>" + 
           "<td>" + 
           " <div >" + 
           + value.Type + 
           "</div> " + 
           "</td>" + 
           "<td>" + 
           " <div >" + 
           value.Id + 
           "</div> " + 
           "</td>" + 
           "</tr>"; 

         }); 
         $taskSelected.innerHTML=html; 

        }).fail(function() { 
         alert("error"); 
        }); 
      }; 

     } 

은 내가 한 것은 당신의 each 루프의 var html 외부를 이동했다 : 일부는

+2

[행] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr)을 중첩 할 수 없습니다 : "허용 된 컨텐츠 : _Zero 이상 _ 또는 요소 또는 그들 혼합 ". 중첩 된 행을 만들려고하면 "자식"행의 여는 태그가 "부모"행을 닫고 새 행을 만듭니다. – Teemu

답변

1

이를 시도하십시오 조언한다. 이렇게하면 이전 HTML이 모두 변수에 그대로 유지되고, 그렇지 않으면 루프를 실행할 때마다 html을 덮어 쓰게됩니다 (이것이 마지막으로 출력되는 이유입니다)).

+1

당신의 대답에 감사드립니다. 실제로 범위가 잘못되었습니다. Teemu가 말한 것처럼 내 최악의 오류는 내 테이블의 구조였습니다. 나는 그것을 수정하여 내 테이블의 구조를 변경하고 $ (html) .insertAfter ($ taskSelected)를 사용하여 현재 행 뒤에 추가하십시오. 다시 한번 감사드립니다. – UserEsp