2012-02-06 3 views
1

У меня есть php-файл, который показывает запросы друзей, скажем, что есть 4 запроса. Я хочу скрыть div с классом «request_buttons», когда пользователь нажимает на прием или отказ от ссылки, но проблема в том, что он скрывает и другие 3 divs, и я хочу скрыть только 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> 

и браузер:

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

LE: с помощью кода, предоставленного 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'); 
     } 
    }); 
} 

И это работает, то ДИВ "request_buttons" и исчезнуть появится сообщение. Я не знаю, как это работает!

ответ

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

действительно, вы правы. Как сказал мугур, я должен предоставить уникальные идентификаторы для div и использовать ваш код. Сейчас он работает, большое спасибо. –

+0

Не забудьте параметр 'id' :) – Stefan

+0

вы должны скрыть родителя ссылки не по ссылке: t.parent(). Hide(); по этому коду – Yorgo

2

В вашем коде замените

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

с

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

'this' в данном случае не относится к элементу с щелчком. – Stefan

+0

. см. контекстный параметр в $ .ajax (..) – techfoobar

+0

А, извините! Не заметил свойства контекста. Я думаю, что ваше сообщение выглядело иначе, когда я прокомментировал это. +1 для отличного решения! – Stefan

0

Вы можете использовать JQuery родительскую функцию для этого. Попробуйте $(this).parent().hide()

Смежные вопросы