2011-08-25 7 views
3

1.4 이전 버전의 jQuery에서 제대로 작동하는 것으로 보이는 코드가있었습니다. 나는 그것이 1.4.4로 확실히 작동을 멈춘 것을 알아 차렸다. 1.6.2에서는 여전히 작동하지 않습니다. 몇 가지 연구를했고이 문제에 대한 비슷한 질문이 있지만 clone()을 수행 한 후 ID 이외의 다른 것이 업데이트되어야하는 시나리오를 찾지 못했습니다.jQuery 복제 기능 이후 자식 요소의 속성 업데이트

jQuery의 최신 버전에서 작동 할 수 있도록이 기사를 다시 작성하는 방법을 아는 사람이 있습니까? 내가 복제 할 노력하고있어 TR 마크 업을 포함하는 경우

//Add dynamic Shot handling 
$('#link_addShot').click(function() { 
    var cloned = $('#tbl_shots tbody tr:last').clone(true); 
    prevNum = numOfShots; 
     numOfShots = numOfShots + 1; 
    $('#shot_number_' + prevNum, cloned).attr('name', 'shot_number_' + numOfShots); 
     $('#shot_type_id_' + prevNum, cloned).attr('name', 'shot_type_id_' + numOfShots); 
     $('#player_id_' + prevNum, cloned).attr('name', 'player_id_' + numOfShots); 

     $('#shot_number_' + prevNum, cloned).attr('id', 'shot_number_' + numOfShots); 
     $('#shot_type_id_' + prevNum, cloned).attr('id', 'shot_type_id_' + numOfShots); 
     $('#player_id_' + prevNum, cloned).attr('id', 'player_id_' + numOfShots); 
    $('#removeLink', cloned).html('<a href="#">Remove</a>'); 
    $('#removeLink a', cloned).click(function() { 
    $(this).parent().parent().parent().remove(); 
    return false; 
    }) 

    $('#shot_type_id_' + numOfShots, cloned).val(0); 
     $('#player_id_' + numOfShots, cloned).val(0); 

    $('#tbl_shots').append(cloned); 
    $(this).removeClass('form_button_hover'); 
    return false;  
}); 

    //remove link handling 
    $(".link_remove").click(function() { 
     $(this).parent().parent().parent().remove(); 
     return false; 
    }); 

아, 아마 도움이됩니다 :

<tr> 
<td><input id="shot_number_5" type="hidden" value="" name="shot_number_5"> 
<select id="shot_type_id_5" class="shot_type_id" name="shot_type_id_5"> 
    <option value="0">Unknown</option> 
    <option value="1">Tee</option> 
    <option value="2">Fairway</option> 
    <option value="3">Rough</option> 
    <option value="4">Bunker (fairway)</option> 
    <option value="8">Bunker (greenside)</option> 
    <option value="5">Fringe</option> 
    <option selected="selected" value="6">Green</option> 
    <option value="7">Penalty</option> 
    <option value="9">Concede</option> 
    <option value="10">Pick Up</option> 
</select></td> 
<td class="td_last" align="center"><div id="removeLink"> <a class="link_remove" href="">Remove</a> </div></td> 
</tr> 
+0

StackOverflow에 오신 것을 환영합니다! 당신 문제를 해결할 수있어서 기뻐요. 사람들이 문제가 해결되었다는 것을 아는 것이 가장 좋은 방법은 마지막 편집에서 얻은 정보를 질문에 대한 답으로 쓰고 대답으로 받아들이는 것입니다. 해피 코딩! – jadarnel27

답변

2

확인을 다른 사람이 비슷한 뭔가를 찾고 경우, 해결책을 발견했다. 논리 문제와 구문 문제 모두라고 생각합니다. 그러나 구문을 변경해야하는지 여부는 확실하지 않습니다. 논리적 인 문제는 prevNum이 실제로 올바르지 않아 ID 대신 와일드 카드로 find() 함수를 사용하도록 변경했기 때문에 복제 된 요소 내에 ID가 하나만 있다는 것을 알았 기 때문입니다.

//Add dynamic Shot handling 
$('#link_addShot').click(function() { 
numOfShots = numOfShots + 1; 
var cloned = $('#tbl_shots tbody tr:last').clone(true); 
cloned.find('#[id*=shot_number_]').attr('id', 'shot_number_' + numOfShots).attr('name','shot_number_' + numOfShots); 
cloned.find('#[id*=shot_type_id_]').attr('id', 'shot_type_id_' + numOfShots).attr('name','shot_type_id_' + numOfShots).val(0);    
cloned.find('#[id*=player_id_]').attr('id', 'player_id_' + numOfShots).attr('name','player_id_' + numOfShots).val(0); 
cloned.find('.removeLink').html('<a href="#">Remove</a>'); 
cloned.find('.removeLink a').click(function() { 
$(this).parent().parent().parent().remove(); 
return false; 
}); 

$('#tbl_shots').append(cloned); 

$(this).removeClass('form_button_hover'); 
return false;  
}); 
관련 문제