2 votes

Définir plusieurs valeurs pour un élément

Je fais un DIV cliquable comme ceci :

jQuery(".post").click(function(){
    window.location=jQuery(this).find(".post-title a").attr("href");
    return false;
});

mais je veux aussi y ajouter l'attribut rel pour que le lien puisse s'ouvrir dans une lightbox. J'ai essayé d'ajouter .attr("rel=prettyphoto") mais ça ne semble pas fonctionner.

1voto

Josh Points 6771

Il devrait l'être :

$("whatever").attr("rel", "prettyphoto");

Comme les docs note :

attr( name ) is the getter
attr( name, value ) is the setter

1voto

bfavaretto Points 46777

Vous devez ajouter le rel au chargement de la page, et non au clic, et assurez-vous de le faire avant d'initier le script de la lightbox. Il n'y a aucun intérêt à définir l'attribut sur le clic, car le rechargement de la page aurait lieu de toute façon, et l'attribut aurait disparu.

Donc :

// Inside this block we're sure the DOM is loaded,
// so we can init our stuff
$(document).ready(function() {

    // Add rel to post title links
    $('.post .post-title a').attr('rel', 'lightbox');

    // Now init your lightbox script
    // (your init code here)

    // Now set the click handler (does not have to be last)
    $(".post").click(function(){
        window.location=$(this).find(".post-title a").attr("href");
        return false;
    });

});

0voto

Kristian Points 7423

Si j'étais vous, je le décomposerais en étapes, vous répondriez ainsi à votre propre question.

jQuery(".post").click(function(){

    // store the link in var
    var link = jQuery(this).find(".post-title a");

    // set the rel
    link.attr('rel','prettyphoto');

    // get the href
    var location = link.attr("href");

    window.location=location;
    return false;
});

N'oubliez pas non plus que le .attr( attrName [, attrVal] ) a deux arguments : si vous écrivez le deuxième argument dans votre fonction, celle-ci sera set une valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X