<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
var commentUrl = 'comment.jsp';
$('.privateTimeline').click(function() {
$.ajax({
url: commentUrl,
type:'post',
data:{
no : $(this).find('.no').text() // working!
},
success:function(data){
if( $(this).children('.comment').is(':hidden') ) { // not working!
$(this).find('.comment').slideDown(400); // not working!
$(this).find('.comment').html(data); // not working!
}
else {
$(this).find('.comment').slidUp(400); // not working!
}
});
})
</script>
答案 0 :(得分:1)
您的上下文在.success()
回调中发生了变化,因此this
指的是您期望的jQuery对象以外的其他内容。
你可以做这样的事情来解决它:
var _this = this;
...
, success(function(){
$(_this).find(".yourClass").yourFunc()
});
或者:
...
, success((function() {
$(this).find(".yourClass").yourFunc();
}).bind(this));
答案 1 :(得分:1)
这应该有效:
var $target =$('.privateTimeline');
$target.click(function() {
$.ajax({
url: commentUrl,
type:'post',
data:{
no : $(this).find('.no').text() // working!
},
success:function(data){
if( $target.children('.comment').is(':hidden') ) { // not working!
$target.find('.comment').slideDown(400); // not working!
$target.find('.comment').html(data); // not working!
}
else {
$target.find('.comment').slidUp(400); // not working!
}
}
});
});
在success:function(data){}
中,$(this)
不再指向$('.privateTimeline')
。因此,您可以使用其唯一的选择器访问它。
另外,你的右括号错了,所以我为你纠正了。