web-dev-qa-db-fra.com

Comment obtenir l'ID d'un élément cliqué avec jQuery

J'ai le code HTML suivant:

<a href="#" id="#1" class="pagerlink" >link</a>
<a href="#" id="#3" class="pagerlink" >link</a>
<a href="#" id="#2" class="pagerlink" >link</a>
/*etc.... */

et le script jQuery suivant:

$(document).ready(function() {

    var $container = $('.gallery_r').cycle({ 
        fx:     'scrollHorz', 
        speed:   500, 
        timeout: 0 
    }); 

    $('a.pagerlink').click(function() { 
        var id = $(this).attr('id');
        $container.cycle(id); 
        return false; 
    }); 

});

le contrôle des liens 'pagerlink' est sur jQuery Cycle slideshow. Si j'échange cette ligne:

$container.cycle(id); 

pour ça

$container.cycle(7); 

ça marche ... (visiblement seulement pour aller à la diapositive 7). Ma question est donc de savoir comment puis-je récupérer l'ID du lien sur lequel on clique et le transférer dans cette ligne?

Merci d'avance!

39
Adam

Vos identifiants sont #1, et cycle veut juste qu'un numéro lui soit passé. Vous devez retirer le # _ avant d'appeler cycle.

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id');
    $container.cycle(id.replace('#', '')); 
    return false; 
});

De plus, les identifiants ne doivent pas contenir le # caractère, il est invalide (les identifiants numériques sont également invalides). Je suggère de changer l'ID en quelque chose comme pager_1.

<a href="#" id="pager_1" class="pagerlink" >link</a>

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id');
    $container.cycle(id.replace('pager_', '')); 
    return false; 
});
68
Rocket Hazmat

Il vous suffit de supprimer le hachage depuis le début:

$('a.pagerlink').click(function() { 
    var id = $(this).attr('id').substring(1);
    $container.cycle(id); 
    return false; 
}); 
7
Richard Dalton

Votre identifiant sera passé en tant que # 1, # 2, etc. Cependant, # n'est pas valide en tant qu'ID (identificateurs de préfixe CSS avec #).

3
David Neale

Tout d'abord, vous ne pouvez pas avoir juste un numéro pour votre identifiant, sauf si vous utilisez HTML5 DOCTYPE. Deuxièmement, vous devez supprimer le # de chaque ID ou le remplacer par ceci:

$container.cycle(id.replace('#','')); 
2
Joseph Marikle