Jquery에서 click event가 append 이후에 안될때
Delegation을 해줘야 한다. 위임같은거….
이렇게 하면 안된다.
$('#add_new_participant').click(function() { var first_name = $('#f_name_participant').val(); var last_name = $('#l_name_participant').val(); var role = $('#new_participant_role option:selected').text(); var email = $('#email_participant').val(); $('#registered_participants').append('<tr><td><a href="#" class="new_participant_form">Participant Registration</a></td><td>'+first_name+ ' '+last_name+'</td><td>'+role+'</td><td>0% done</td></tr>'); }); $('.new_participant_form').click(function() { var $td = $(this).closest('tr').children('td'); var part_name = $td.eq(1).text(); alert(part_name); }); });
위에처럼 Java를 짜고, HTML이 아래와 같을때 안된다.
<table id="registered_participants" class="tablesorter"> <thead> <tr> <th>Form</th> <th>Name</th> <th>Role</th> <th>Progress </th> </tr> </thead> <tbody> <tr> <td><a href="#" class="new_participant_form">Participant Registration</a></td> <td>Smith Johnson</td> <td>Parent</td> <td>60% done</td> </tr> </tbody> </table> <button id="add_new_participant"></span>Add New Entry</button>
$(‘.new_participant_form’).click(function() 여기를 아래와 같이 수정해야한다.
$(‘#registered_participants’).on(‘click’, ‘.new_participant_form‘, function()