Je suis en train de déléguer un événement de clic à un élément de TR qui contient un TD avec un attribut spécifique, à savoirsélecteur jQuery: délégué cliquez sur événement uniquement des éléments tr avec des données spécifiques
<table>
<tr>
<td>product one</td>
<td>price</td>
</tr>
<tr>
<td data-imgurl="images/p2.png">product two</td>
<td>price</td>
</tr>
</table>
L'objectif est de cliquez sur la ligne et récupérez la valeur de l'attribut TD "data-imgurl" de cette ligne, c'est-à-dire l'URI d'une image. Ceci est juste un test pour récupérer cette valeur. En fin de compte, je voudrais que le gestionnaire de clic montre l'image dans un DIV ou peut-être lightbox caché, pas sûr de ce que je veux faire pour le moment.
Mon sélecteur (qui fonctionne uniquement en ce qu'il attribuera un clic à l'élément TD réel:
$("table").delegate("tr td[data-imgurl]", "click", function(evt){
alert($(this).attr("data-imgurl"));
});
Remarque, les données sont créées dynamiquement à partir d'un script côté serveur, et les « données-imgURL "attribut est basé sur la logique dans ce script, de sorte que seuls les produits qui ont réellement des images sont assignés un attribut" data-imgurl "Peut-être que je regarde tout faux, et devrait en quelque sorte attacher les données à la ligne elle-même, mais
Ou peut-être que je devrais réellement pousser l'image dans un TD caché et lui assigner un attribut de classe ou de rel? xists sur la page mais un clic le révèle? L'idée étant toujours que seuls les produits avec des images réelles peuvent être cliquables.
EDIT Ok, j'ai résolu cela en poussant les données dans la ligne elle-même. Cela a plus de sens, chaque rangée est un disque. Solution:
<table>
<tr>
<td>product one</td>
<td>price</td>
</tr>
<tr data-imgurl="images/p2.png">
<td>product two</td>
<td>price</td>
</tr>
</table>
Et le jQuery
$("table").delegate("tr[data-imgurl]", "click", function(evt){
alert($(this).attr("data-imgurl"));
});
Merci pour votre réponse; ceci aboutit au même résultat que mon code, c'est-à-dire que le sélecteur affecte toujours le clic au TD et non au TR. – bdl