2012-07-23 2 views
0

여기에 사용자가 일부 div를 클릭 할 수있는 사이트가 있습니다. 그런 다음이 코드를 사용하여 "X"를 추가합니다.jQuery/JavaScript : 동적 추가 콘텐츠를 사용한 복제

function addEx(elem, insertClass) { 
     var element = $(elem); 
     var newInsertClass = insertClass.replace('.', ''); 
     var insert = "<span class='" + newInsertClass + "'> X </span>"; 

     element.click(function(){ 
      var $this = $(this); 

      if($this.text().indexOf("X") >= 0) { 
       var id = $this.attr("id"); 
       $("#" + id + " " + insertClass).remove(); 
      } else { 
       $this.append(insert); 
      } 
     }) 
    } 

"X"가 이미 있으면 제거합니다. 거기에 없으면 추가합니다. 이것은 잘 작동합니다.

사용자는 "결과 얻기"버튼을 클릭 할 수도 있습니다. 사용자가 클릭 한 div가 올바른 답변과 비교됩니다. 이것에 따르면, 정확하게 클릭했거나 너무 많이 클릭했거나 클릭을 잊어 버린 div에 클래스를 추가합니다. 이것은 또한 작동하지만 내용 ("X")은 손실됩니다. 그래서 나는이 클래스들을 위해 제공 한 CSS를 볼 수는 있지만 복제본으로 원본을 대체 한 후에 div 안의 "X"가 빠져있다. 그때 복제에 해당 클래스를 추가하고 복제와 원본을 대체, 여기에 요소를 복제

var test = $(".test"); 
var clone = test.clone(true,true); 


function correction() { 
    clone.children().filter(function() { 
     return $.inArray('#' + this.id, forgotten) != -1; 
    }).addClass("forgotten").end().filter(function() { 
     return $.inArray('#' + this.id, toomuch) != -1; 
    }).addClass("toomuch").end().filter(function() { 
     return $.inArray('#' + this.id, correct) != -1; 
    }).addClass("right"); 

    test.replaceWith(clone);     
} 

: 클래스를 추가하려면이 코드를 사용합니다.

제 질문은 다음과 같습니다. 어떻게 콘텐츠 손실을 방지 할 수 있습니까? 나는 그것이 "X"가 동적으로 추가 되었기 때문에 그것이라고 생각한다? 또는 .test과 함께 하나 이상의 요소가 있습니다. 원인이 될 수 있습니까?

답변

1

John Resig은 jQuery를 사용하여 개체를 복제하는 것에 대해 question에 응답했습니다. 도움이 될만한 당신

+0

하! 고마워, 그 일을 했어! :-) – Sven