这是我关于SO的第一个问题,所以如果它看起来很愚蠢,请放轻松我。我有一个页面,其中包含一些图片列表,其中包含要删除的链接,并且可以添加更多图片。在每个事件之后(如下所示加载#user_gallery
,我必须点击两次删除链接才能使用。为什么会这样?
$('body').delegate(".delete", "click", function(e){
$('.delete').click(function(ev){
var pic_id = $(this).attr('id').replace('pic_', '') ;
$.post( 'unpublish_pics.php',
{pic: pic_id, action:'delete'},
function(data)
{
$('#user_gallery').load("pictures_display.php");
},"json"
);
ev.preventDefault();
});
e.preventDefault();
});
html就是这样的。
<div id="user_gallery">
<div class="image">
<a rel="gallery" class="img" href="pic.png"><img src="pic.png"></a>
<a id="pic_1" class="ui-state-default ui-corner-all delete" href="#">Delete</a>
</div>
答案 0 :(得分:4)
你下面不需要那个.click()
处理程序/包装器,只需要这样的.delegate()
:
$('body').delegate(".delete", "click", function(e){
var pic_id = $(this).attr('id').replace('pic_', '');
$.post('unpublish_pics.php', {pic: pic_id, action:'delete'}, function(data) {
$('#user_gallery').load("pictures_display.php");
},"json");
e.preventDefault();
});
目前,您正在为下一次点击绑定.click()
处理程序...如果您想在点击时执行操作,只需将代码放在.delegate()
处理程序中。