2009-12-08 8 views
0

Je le code actuellement dans un de mes sites,Supprimer un div avec jQuery

$("a.navlink").click(function (ev) { 
       ev.preventDefault(); 
       var id = $(this).attr("id") 
       if($(this).hasClass("active")) { 
        alert(id); 
        $(id).remove("<div id="+ id +"/>"); 
       } 
      $(this).toggleClass("active"); 
       var url = $(this).attr("href"); 
       $.ajax ({ 
        url: "index.php/home/category", 
        type: "GET", 
        success : function (html) { 
       //alert("Success"); 
         $("#accordion").append($("<div id="+ id +"/>").append(html) 
         ); 
        } 
       }); 
      }); 

Essentiellement ce qui est fait il obtient l'ID du clic nav et obtient des données de la base de données et place alors que les données dans un div qui est uniquement nommé avec l'ID de l'élément click. Qu'est-ce que je veux savoir, c'est comment pourrait alors supprimer l'élément div qui est créé à la volée, comme vous pouvez le voir dans mon code, je l'ai essayé.

+0

Il y a un couple de points, je suis confus au sujet de logique ici bien au-delà de votre problème avec la suppression() fonction. Vous avez dit que c'est spécifique à l'ID, mais il appelle toujours la même URL dans l'appel ajax. En outre, vous ajoutez un DIV avec un ID qui correspond à l'élément sur lequel vous venez de cliquer. (en créant le même identifiant deux fois) Sans en voir plus, je ne peux pas spéculer complètement sur ce que vous essayez d'accomplir. C'est juste un couple de tweaks, mais ce n'est pas tout à fait correct. – cgp

+0

Fondamentalement comment cela fonctionne est là base de données et codeigniter derrière tout cela, le menu est créé dynamiquement avec PHP et est donné et ID, l'ID est passé au javascript et sur le clic d'un lien l'URI est recueillie par l'URL décrite et une requête est renvoyée de la à la base de données, les résultats sont retournés et imprimés dans un div qui est ID par l'ID qui est sur le lien qui a été cliqué oralement je réalise que ceci ne valide pas et il sera changé en classes – Udders

Répondre

2

Vous avez un autre problème avec votre code. Vous essayez de donner à la DIV le même identifiant que le lien. Les ID doivent être uniques, ce qui entraîne un code HTML incorrect. Essayez préfixer « div_ » à l'id du lien, puis utilisez:

$('#div_' + id).remove(); 

résultat:

$("a.navlink").click(function (ev) { 
    var id = $(this).attr("id"); 
    if($(this).hasClass("active")) { 
     alert(id); 
     $('#div_' + id).remove(); 
    } 
    $(this).toggleClass("active"); 
    var url = $(this).attr("href"); 
    $.ajax ({ 
     url: "index.php/home/category", 
     type: "GET", 
     success : function (html) { 
      //alert("Success"); 
      $("#accordion").append($("<div id='div_"+ id +"'/>").append(html)); 
     } 
    }); 
}); 
2
if ($(this).hasClass("active")) { 
    $(this).remove(); 
} 

C'est tout ce dont vous avez besoin!

+0

n'est-ce pas la représentation du lien plutôt que la div? – Udders

+0

Bien sûr, et c'est ce que vous obtenez l'ID de selon ce code. (Voir mon commentaire à votre question principale) Si vous voulez l'ID d'un enfant DIV, alors vous devez faire quelque chose de différent dans votre code. – cgp

+0

je reçois l'ID de (ceci) mais seulement si je peux l'assigner en tant que classe (était un id) à la div qui est ajoutée à #accordion – Udders