Changer le contenu de div - jQuery


89

Comment est-il possible de changer le contenu de cette div, quand un des LIENS est cliqué?

<div align="center" id="content-container">
    <a href="#" class="click cgreen">Main Balance</a>
    <a href="#" class="click cgreen">PayPal</a>
    <a href="#" class="click cgreen">AlertPay</a>
</div>

une question similaire à se référer: stackoverflow.com/questions/1309452/…
Gurjot kaur

Réponses:


156

Vous pouvez vous abonner à l'événement .click pour les liens et modifier le contenu du div en utilisant la .htmlméthode:

$('.click').click(function() {
    // get the contents of the link that was clicked
    var linkText = $(this).text();

    // replace the contents of the div with the link text
    $('#content-container').html(linkText);

    // cancel the default action of the link by returning false
    return false;
});

Notez cependant que si vous remplacez le contenu de ce div, le gestionnaire de clics que vous avez attribué sera détruit. Si vous avez l'intention d'injecter de nouveaux éléments DOM à l'intérieur du div pour lesquels vous devez attacher des gestionnaires d'événements, ces pièces jointes doivent être effectuées dans le gestionnaire .click après avoir inséré le nouveau contenu. Si le sélecteur d'origine de l'événement est conservé, vous pouvez également jeter un œil à la .delegateméthode pour attacher le gestionnaire.


1
Comment puis-je charger le contenu d'une AUTRE div, sur la même page, dans # content-container?
Oliver 'Oli' Jensen

2
@Oliver 'Oli' Jensen, comme ceci:$('#content-container').html($('#someOtherDivId').html());
Darin Dimitrov

Dieu merci! J'ai réalisé que #div ne peut pas être modifié par .val (); à la place, nous devrions utiliser .html (); fonctions pour le faire fonctionner! : D @cuSK merci
gumuruh

live saver @DarinDimitrov
busymicrobe

14

Il y a 2 fonctions jQuery que vous voudrez utiliser ici.

1) click. Cela prendra une fonction anonyme comme seul paramètre, et l'exécutera lorsque vous cliquerez sur l'élément.

2) html. Cela prendra une chaîne html comme seul paramètre, et remplacera le contenu de votre élément par le html fourni.

Donc, dans votre cas, vous voudrez faire ce qui suit:

$('#content-container a').click(function(e){
    $(this).parent().html('<a href="#">I\'m a new link</a>');
    e.preventDefault();
});

Si vous souhaitez uniquement ajouter du contenu à votre div, plutôt que de tout remplacer, vous devez utiliser append:

$('#content-container a').click(function(e){
    $(this).parent().append('<a href="#">I\'m a new link</a>');
    e.preventDefault();
});

Si vous souhaitez que les nouveaux liens ajoutés ajoutent également un nouveau contenu lorsque vous cliquez dessus, vous devez utiliser la délégation d'événements :

$('#content-container').on('click', 'a', function(e){
    $(this).parent().append('<a href="#">I\'m a new link</a>');
    e.preventDefault();
});

5
$('a').click(function(){
 $('#content-container').html('My content here :-)');
});

2

Vous pouvez essayer la même chose avec replacewith ()

$('.click').click(function() {
    // get the contents of the link that was clicked
    var linkText = $(this).text();

    // replace the contents of the div with the link text
    $('#content-container').replaceWith(linkText);

    // cancel the default action of the link by returning false
    return false;
});

La .replaceWith()méthode supprime le contenu du DOM et insère un nouveau contenu à sa place en un seul appel.


1

Essayez ceci pour changer le contenu de div en utilisant jQuery.

Voir plus @ Modifier le contenu de div en utilisant jQuery

$(document).ready(function(){
    $("#Textarea").keyup(function(){
        // Getting the current value of textarea
        var currentText = $(this).val();

        // Setting the Div content
        $(".output").text(currentText);
    });
});

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.