使用$ .post()并返回对象

时间:2010-12-08 01:05:39

标签: javascript jquery

示例:

<button>Test 1</button>
<button>Test 2</button>
<button>Test 3</button>

这样的事情:

$('button').click(function(){
     $.post('a.php',{text:$(this).text()},function(data){
          if(data == 'doThis'){
            $(this)...(??button??)...css('color','#ff0000');
          }else{
            $(this)...(??button??)...css('color','#00ffff');
          }
     });
});

所以,根据“a.php”的结果......按钮会有不同的东西。 我不知道数字操作按钮,这个想法是所有人的一个功能.. 你们人们会怎么做?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情(未经测试)

$('button').click(function(){
 var btn = $(this);
 $.post('a.php',{text:$(this).text()},function(data){
      if(data == 'doThis'){
        btn.css('color','#ff0000');
      }else{
         btn.css('color','#00ffff');
      }
     });
});

将按钮实例存储为btn允许您在$ .post的anon函数内调用它,即使click事件在执行前多次执行,也保留引用.post可以返回有效。< / p>

答案 1 :(得分:1)

创建对this的临时引用以保持关闭:

$('button').click(function(){
     var self = this;
     $.post('a.php',{text:$(self).text()},function(data){
         $(self).css('color',(data == 'doThis') ? '#ff0000' : '#00ffff');
     });
}); 

答案 2 :(得分:0)

只是要添加,另一个选项是使用$.ajax,并将context选项设置为this,使点击的按钮成为成功回调的上下文:

$.ajax({ 
    url: "a.php", 
    type: "post",
    data: {text:$(this).text()},
    context: this, 
    success: function(data) {
      if(data == 'doThis'){
        $(this).css('color','#ff0000');
      }else{
         $(this).css('color','#00ffff');
      }      
    }
});