2009-12-08 6 views
0

J'ai un script java qui fonctionne derrière un menu de navigation, l'utilisateur clique sur le bouton nav, et AJAX tire et apporte du HTML, ce que je veux, c'est si ce même lien est cliqué puis le le contenu chargé par ce bouton spécifique est supprimé du balisage.Suppression du contenu créé par javascript

Est-ce que quelqu'un a des idées? Mon code est actuellement à

$("#Blog").click(function (ev) { 
     ev.preventDefault() 
      var url = $(this).attr("href"); 
      $.ajax ({ 
       url: "index.php/home/category", 
       type: "GET", 
       success : function (html) { 
      //alert("Success"); 
        $("#accordion").append(html); 
       } 
      }); 
     }); 

Répondre

0
$("#accordion").append(
    $("<div class='AJAXContend' />").append(html) 
); 

Et vous pouvez facilement faire $('.AJAXContend').remove();.

Une autre option est de faire $('#accordion :last-child').remove();, mais c'est un peu hacky.

0
$("#Blog").click(function (ev) { 
     ev.preventDefault(); 

manquant la virgule après preventDefault.

+0

C'est un point-virgule, et c'est facultatif (bien que bonne pratique à utiliser) – Greg

+0

ouais, vous avez raison, sacrément compétences en anglais. – yoda

0

Donc je ne sais pas jQuery assez pour répondre de cette façon, mais pourquoi ne pas utiliser un simple commutateur booléen?

// Pseudo: 
If clicked and the switch is false, show the HTML, and set the Switch to True 

If clicked and the switch is true, hide the HTML, and set the Switch to False 

Cela devrait résoudre le problème.

Le code suivant est probablement horriblement mal, mais je vais l'utiliser pour expliquer ma pensée:

//Global Variables 
var switch = false; 

//Function 
if(!switch) 
{ 
    $("#Blog").click(function (ev) { 
     ev.preventDefault() 
      var url = $(this).attr("href"); 
      $.ajax ({ 
       url: "index.php/home/category", 
       type: "GET", 
       success : function (html) { 
       //alert("Success"); 
        $("#accordion").append(html); 
       } 
      }); 
     }); 

    switch = true; 
} 
else 
{ 
    $("#accordion").innerHTML = ""; 
    switch = false; 
} 
3

Essayez d'utiliser .toggle au lieu de .cliquez:

Cela vous permettra d'ajouter une deuxième fonction ce qui supprime le contenu lorsque le bouton est cliqué à nouveau.

$("#Blog").toggle(function (ev) { 
    ev.preventDefault(); 
    var url = $(this).attr("href"); 
    $.ajax ({ 
     url: "index.php/home/category", 
     type: "GET", 
     success : function (html) { 
      //alert("Success"); 
      $("#accordion").append(html); 
      } 
     }); 
    }, 
    function (ev) { 
     // remove content from accordion here 
    }); 
+0

Bonne idée. Je ne trouve jamais un bon usage pour 'toggle' ... – Kobi

+0

toggle casse les scripts, erreur console me dit (ev) est indéfini – Udders

+0

Les exemples ne mentionnent pas l'objet événement pour les callbacks à bascule. Je l'ai testé dans une expérience simple, il a semblé fonctionner pour moi. '$ ('h1'). toggle (fonction (ev) {ev.preventDefault(); alerte (ev)},/* 2ème fonction * /);' –

Questions connexes