2009-08-25 7 views
2

-demandé AHAH J'ai un HTML AHAH demandée, comme:Comment lier un événement au groupe de liens en HTML

<table> 
<tr> 
    <td>...</td> 
    <td><img src="..." onClick="get_next_ahah(sell####)" id="sell####"/></td> 
</tr> 
<tr> 
    <td>...</td> 
    <td><img src="..." onClick="get_next_ahah(sell####)" id="sell####"/></td> 
</tr> 
... and so on 

où #### - ID numériques de DB. Comment remplacer la fonction "get_next_ahah()" sur une fonction jQuery écrite de façon efficace? Et comment puis-je savoir quel identifiant j'utilise?

+0

Bienvenue sur Stack Overflow! C'est comme des experts-échange (moins le sucer). – karim79

Répondre

1

Vous pouvez utiliser une forme assez obscure du sélecteur CSS pour saisir tous les éléments dont l'ID contient le texte « vendre » et l'utiliser ensuite pour assigner des événements à eux:

$("[id^=sell]") 

Ou, si les éléments sont tous garantis être img s, vous pouvez utiliser ce sélecteur plus spécifique au lieu:

$("img[id^=sell]") 

Ces sélecteurs retournent toutes deux un ensemble d'éléments qui ont « vendre » dans l'ID, que vous pouvez appeler sur click().

Pour connaître l'ID actuel, vous pouvez simplement dépouiller « vendre » de l'ID, puis passer à votre fonction que get_next_ahah(), comme ceci:

$("img[id^=sell]").click(function() { 
    get_next_ahah(this.id.replace('sell', ''); 
}); 
+0

@htw - +1, manière géniale de le faire, mais notez que les filtres d'attribut sont sloooow . – karim79

1

Il serait plus facile d'extraire le numéro de l'ID si vous séparaient le numéro de la chaîne préfixé par un trait de soulignement ou tel, par exemple:

<img src="..." id="sell_1234"/> 

Ensuite, vous avez juste à faire ceci:

$('table tr td img').click(function() { 
    var num = $(this).attr('id').split('_')[1]; 
    get_next_ahah(num); 
}); 

Si vous ne pouvez pas changer l'ID, puis il suffit d'utiliser une expression régulière au lieu d'extraire le numéro de la chaîne, par exemple:

$('table tr td img').click(function() { 
    var num = $(this).attr('id').match(/\((\d+)\)/)[1]; 
    get_next_ahah(num); 
}); 
+0

"Notez également que vous avez fermé les balises d'ancrage, mais aucune balise d'ouverture dans votre balisage" désolé, changé Merci pour votre réponse –

Questions connexes