我试图在ajax之后向我的按钮添加一个css类:
$('a.vote-up-0').click(function() {
var id = $(this).siblings('.reply-id').val();
var ajax_auth_token = $('#auth_token').val();
$.post('user/?action=ajax', {
vote_type: 'up',
reply_id: id,
auth_token: ajax_auth_token
}, function(data, return_status) {
var json_data = jQuery.parseJSON(data);
switch(json_data.r_message)
{
case "success":
output = "Yay it works!"; // change
alert(output);
$(this).addClass('vote-up-1'); // ** the culprit **
break;
警报有效,但它不会向其添加类型vote-up-1。页面上有几个相同类的实例(即投票-0),所以如果我将(this)改为'vote-up-0',它会改变所有这些实例。有人有什么想法吗?
答案 0 :(得分:2)
在“点击”处理程序的顶部,隐藏this
值:
var theButton = this;
然后,在你的“.post()”处理程序中:
$(theButton).addClass('vote-up-1');
问题是当jQuery调用你的“.post()”处理程序时,this
不会引用该按钮。因此,您将副本保存到本地变量中,并且它会在时间到来时等待处理程序。
答案 1 :(得分:0)
兄弟:$(this).addClass('vote-up-1'); // ** the culprit **
确实是罪魁祸首。 $(this)
在此范围内不可用,因此在执行任何ajax之前,最好先获取按钮的句柄。如:
var btnHnd = $(this);
现在你可以做帖子了:$.post('user/?action=ajax', { ...
答案 2 :(得分:0)
更改此
$(putyourbuttonidhere).addClass('vote-up-1');