2012-02-06 171 views
1

我有一個顯示朋友請求的PHP文件,可以說有4個請求。當用戶點擊接受或拒絕鏈接時,我想隱藏類爲「request_buttons」的div,但問題在於它隱藏了其他3個div,我只想隱藏鏈接被按下的div。jquery onclick hide/show div

我的HTML代碼是:

<div class="request_buttons"> 
    <a href="#" onclick="accept(<?php echo $cerere['id']; ?>)">accept</a> 
    <a href="#" onclick="refuse(<?php echo $cerere['id']; ?>)">refuse</a> 
</div> 
<span class="result"></span> 

和JavaScript是:

function accept(id) 
{ 
    $.ajax({ 
     type: "POST", 
     url: "request.php?action=accept", 
     data: "id="+id, 
     success: function(){ 
      $('.request_buttons').hide(); 
      $('.result').html('Request accepted'); 
     } 
    }); 
} 

LE:用我想出了一個sollution由Royi納米爾提供的代碼(錯誤)。 我修改了HTML這樣:

<div id="2">  
    <div class="request_buttons"> 
    <a href="#" onclick="accept(2)">accept</a> 
    <a href="#" onclick="refuse(2)">refuse</a> 
    </div> 
    <div class="result"></div>    
</div> 

和jQuery的這個:

function accept(id) 
{ 
t = $('#'+id); 
    $.ajax({ 
     type: "POST", 
     url: "request.php?action=accept", 
     data: "id="+id, 
     success: function(){   
     $(t,'.result').first().html('Accepted'); 
     } 
    }); 
} 

而且它的工作原理,在div 「request_buttons」 dissapear,顯示消息。我不知道如何,但它的工作原理!

回答

3
div class="request_buttons"> 
    <a href="#" onclick="accept(this);">accept</a> 
    <a href="#" onclick="refuse(this);">refuse</a> 
</div> 

function accept(obj) 
{ 
t = $(obj); 

    $.ajax({ 
     type: "POST", 
     url: "request.php?action=accept", 
     data: "id="+id, 
     success: function(){ 
      t.parent(".request_buttons").hide(); 
      $('.result').html('Request accepted'); 
     } 
    }); 
} 
+0

確實,你是對的。正如mugur所說,我必須給予div獨特的ID並使用你的代碼。它現在在工作,非常感謝你。 – 2012-02-06 12:14:34

+0

不要忘記'id'的參數:) – Stefan 2012-02-06 12:16:47

+0

你應該隱藏鏈接的父節點而不是鏈接:t.parent()。hide();通過該代碼 – Yorgo 2012-02-06 12:24:13

2

在代碼中,有

$.ajax({ 
    type: "POST", 
    url: "request.php?action=accept", 
    context: $('#'+id), 
    success: function(){ 
     $(this).parents('.request_buttons').hide(); 
     $('.result').html('Request accepted'); 
    } 
}); 
+0

在這種情況下,'this'不指向被點擊的元素。 – Stefan 2012-02-06 12:13:57

+0

它的確如此。請參閱$ .ajax中的上下文參數(..) – techfoobar 2012-02-06 12:15:18

+0

啊,對不起!沒有注意到上下文屬性。當我評論它時,我認爲你的帖子看起來不一樣。 +1一個偉大的解決方案! – Stefan 2012-02-06 12:19:07

0

更換

$.ajax({ 
    type: "POST", 
    url: "request.php?action=accept", 
    data: "id="+id, 
    success: function(){ 
     $('.request_buttons').hide(); 
     $('.result').html('Request accepted'); 
    } 
}); 

您可以使用jQuery的父函數這一點。嘗試$(this).parent().hide()