2010-08-08 7 views
2

J'ai une question,sélectionner un caractère dans jquery

<a id="shoppingLink1" href="?page=bestellen&amp;action=add&amp;id=2"> 
    <img src="images/shoppingcartButton.png" class="shoppingButton" alt="shoppingcartButton" title="shoppingcartButton"/> 
</a><br/> 

dans jquery, quand je clique sur le shoppingButton je voudrais sélectionner le dernier caractère de l'id « shoppingLink ». le "1".

Ceux-ci sont ajoutés dynamiquement, donc s'il s'agit de 10, il faut automatiquement sélectionner les 2 derniers caractères. Quelqu'un qui peut m'aider?

+0

Pouvez-vous montrer plus en détail ce que vous voulez faire ? –

Répondre

1
$('.shoppingButton').click(function() { 
    var id = parseInt($(this).parent('a[id^=shoppingLink]').attr('id').match(/\d+$/)[0], 10); 

    // Do stuff. 

    return false; 
});​ 

Il utilise pour correspondre à tous les RegExp chiffres à la fin de $(this).parent('a[id^=shoppingLink]').attr('id') (à savoir la 'mère de a' s .shoppingButtonid attribut où le id commence par "shoppingLink"). Il analyse ensuite ces chiffres en un nombre avec parseInt.

+0

cela semble être exactement ce que je cherche, mais l'expression rationnelle donne une erreur. firebug dit: $ (this) .parent ("a"). attr ("id"). match (/ \ d + $ /) est nul – vincent

+0

mise à jour, mon mauvais faisait quelque chose wron, fonctionne parfaitement maintenant – vincent

1

Pourquoi ne pas vous l'appelez shopping-link-1 ou quelque chose de similaire, et mettez la classe shoppingButton sur l'étiquette a au lieu de img? De cette façon, vous pouvez utiliser la méthode split pour obtenir l'ID numérique. Voici quelques exemples jQuery à utiliser:

$('a.shoppingButton').click(function() { 
    var link_id = parseInt($(this).attr('id').split('-')[2]); 
    // do your thing with link_id here 
}); 

De cette façon, lorsque vous divisez par le '-' caractère, il est garanti de revenir seulement le nombre, peu importe le nombre de chiffres dont il dispose. Mais si vous devez absolument garder le balisage actuel, utilisez une expression régulière:

$('img.shoppingButton').click(function() { 
    var link_id = parseInt($(this).parent().attr('id').match(/(\d+)$/)[1]); 
    // do your thing with link_id here 
}); 

De cette façon, il répondra aux clics sur l'image, et encore tirer l'ID de l'étiquette a.

0

Vous pouvez regarder l'inverse: vous savez attendre la chaîne « shoppingLink » bande de sorte que de premier analyser alors le nombre:

$('a.shoppingButton').click(function() { 
    var theID = parseInt($(this).attr('id').replace('shoppingButton', '')); 
    theID = isNaN(theID) ? 0 : theID; 
    // actions here 
});​ 
Questions connexes