Imaginez que vous ayez le bouton suivant:

<button id="id" data-trigger-function = "true", data-value-1="12345", data-value-guid="534-534-657647365-gd">Click Me for Function</button>

Est-il possible d'obtenir quelque chose comme ce qui suit dans la fonction appelée:

$(this).attr('data-value-'+  * ).each(...);

L'objectif serait d'utiliser un sélecteur universel dans le nom de l'attribut, et non dans la valeur de l'attribut (pas quelque chose comme ceci: [nom ^ = 'quelque chose']). L'objectif est d'obtenir les valeurs de data-value-1 et data-value-guid car elles ont toutes deux le même début .., cela signifie que data-value pourrait être, data-value-qwerty, data-value-xpto, sans avoir à connaître le *.

J'ai cherché ça, mais je n'ai rien trouvé de tel, ni aucune mention de quelque chose comme ça. C'est possible?

Je vous remercie! (désolé pour le mauvais anglais)

1
Diogo Almeida 23 juil. 2015 à 15:01

2 réponses

Meilleure réponse

Vous pouvez obtenir tous les attributs et les parcourir en boucle:

$.each(this.attributes, function(index, attr){
    var name = attr.name;

    if(name.startsWith('data-value') {
        var value = attr.value;

        //You code goes here
    }
});
3
DavidG 23 juil. 2015 à 12:08

Une autre option:

Vous pouvez également choisir de parcourir uniquement le data-* et de filtrer ceux qui commencent par value comme ci-dessous:

$.each($("button").data(), function(key, val) {
    if (key.match(/^value/i)) {
        alert (key + ": " + val);
    }
})

Remarque: ce qui précède vous oblige à remplacer data-value-1="12345" par quelque chose comme data-value-one="12345"

Une démo

1
lshettyl 23 juil. 2015 à 12:23