单击锚标签并将ID设置为href时,我正在执行ajax请求。顺便说一句,该锚标记是动态创建的。
<a href="983" class="commentDeleteLink">delete</a>
单击锚标记后,将执行以下代码:
$('.commentDeleteLink').live('click', function(event) { event.preventDefault(); var result = confirm('Proceed?'); if ( result ) { $.ajax({ url: window.config.AJAX_REQUEST, type: "POST", data: { action : 'DELCOMMENT', comment : $('#commentText').val(), comment_id : $(this).attr('href') }, success: function(result) { alert($(this).attr('href')); //$(this).fadeOut(slow); } }); } });
当我尝试显示$(this).attr(’href’)时,它说它是“未定义的”。我真正想做的是fadeOut锚标记,但是当我调查$(this)的值时,它是“未定义”的。
上面的代码段可能有什么问题?
你应该试试
$('.commentDeleteLink').live('click', function(event) { event.preventDefault(); var result = confirm('Proceed?'); var that = this; if ( result ) { $.ajax({ url: window.config.AJAX_REQUEST, type: "POST", data: { action : 'DELCOMMENT', comment : $('#commentText').val(), comment_id : $(this).attr('href') }, success: function(result) { alert($(that).attr('href')); //$(that).fadeOut(slow); } }); } });
因为this在回调中不是clicked元素,所以您应该缓存this一个that可以重复使用并且对上下文不敏感的变量
this
that