我在使用jQuery时遇到了一些问题
的HTML
<div class="dnone team_data" id="team_<?php echo $allnum; ?>" style="padding: 10px; margin: 2px 0 2px 0; border: 1px solid <?php echo $site_color; ?>;">
<div class="ajax-json-loading"></div>
<div class="ajax-json-response"></div>
<table cellspacing="5">
<tr>
<td valign="top" style="width: 100px;">
<b>Csapat vezető:</b>
</td>
<td class="team-leader-area">
<input type="hidden" class="team-leader-hidden-id" value="<?php echo $value['leader']; ?>" />
<div class="team-leader-id"><a href="http://lanseries.hu/index.php?oldal=profile&p_id=<?php echo $value['leader']; ?>" target="_blank"><?php echo $value['leader']; ?></a></div>
<div class="team-leader-modify"><a href="javascript:void(0);">Módosít</a></div>
</td>
</tr>
<tr>
<td valign="top" style="width: 100px;">
<b>Befizető címe:</b>
</td>
<td>
<?php echo $value['p_address']; ?>
</td>
</tr>
</table></div>
还有jQuery
$(document).ready(function() {
$('.team-leader-modify a').click(function(){
var action = $(this).text();
if (action == 'Módosít') { //Option 1
var value = $(this).parents('.team_data').find('.team-leader-hidden-id').val();
$(this).parents('.team_data').find('.team-leader-id').html('<input type="text" name="leader-id" class="leader-id" value="'+value+'" /><input type="button" name="team-leader-mod-button" class="team-leader-mod-button" value="módosít" />');
$(this).parents('.team_data').find('.team-leader-modify').html('<a href="javascript:void(0)">Mégse</a>');
}
if (action == 'Mégse') { //Option 2
var value = $(this).parents('.team_data').find('.team-leader-hidden-id').val();
$(this).parents('.team_data').find('.team-leader-id').html('<a href="http://lanseries.hu/index.php?oldal=profile&p_id='+value+'" target="_blank">'+value+'</a>');
$(this).parents('.team_data').find('.team-leader-modify').html('<a href="javascript:void(0)">Módosít</a>');
}
}); });
在DOM加载后单击
a
后,它会正确显示option 1
,但是在a
中单击option 1
后,它不会显示option 2
。你可以帮帮我吗?
谢谢:马塞尔
最佳答案
如果我对您的理解正确,那么问题是您正在向DOM中插入新元素,因此click
事件处理程序将不会附加到该元素。您可以使用jQuery的live
或delegate
方法将事件处理程序附加到现有元素以及将来添加的元素:
$('.team-leader-modify a').live("click", function(){
//Your function
});
或者,使用
delegate
:$('.team-leader-modify').delegate("a", "click", function(){
//Your function
});
我建议使用
delegate
,它提供更好的性能,因为jQuery不必监视整个DOM中的新元素,只需监视所选元素。