Tutte le risposte sono corretto, ma voglio dire qualcosa che nessun altro ha fatto.
Il metodo jQuery data
si comporta come un getter per gli attributi di dati html5, ma il setter non modifica l'attributo data- *.
Quindi, Se è stato aggiunto manualmente i dati (come si afferma nel tuo commento), quindi è possibile utilizzare un selettore di attributo CSS per selezionare il vostro elemento:
$('#element[data-data1=1]')
ma se hai aggiunto (alterata) i dati tramite jQuery, quindi la soluzione di cui sopra non funzionerà.
Ecco un esempio di questo fallimento:
var div = $('<div />').data('key','value');
alert(div.data('key') == div.attr('data-key'));// it will be false
Quindi la soluzione è quella di filtrare la raccolta controllando il valore dei dati jQuery per abbinare quello desiderato:
// replace key & value with own strings
$('selector').filter(function(i, el){
return $(this).data('key') == 'value';
});
Così, al fine di superare questi problemi, è necessario utilizzare gli attributi HTML5 set di dati (attraverso attr
methos di jQuery) come getter e setter:
$('selector').attr('data-' + key, value);
oppure è possibile utilizzare un'espressione personalizzata che filtra jQuery interna data
:
$.expr[':'].data = function(elem, index, m) {
// Remove ":data(" and the trailing ")" from the match, as these parts aren't needed:
m[0] = m[0].replace(/:data\(|\)$/g, '');
var regex = new RegExp('([\'"]?)((?:\\\\\\1|.)+?)\\1(,|$)', 'g'),
// Retrieve data key:
key = regex.exec(m[0])[2],
// Retrieve data value to test against:
val = regex.exec(m[0]);
if (val) {
val = val[2];
}
// If a value was passed then we test for it, otherwise we test that the value evaluates to true:
return val ? $(elem).data(key) == val : !!$(elem).data(key);
};
e usarlo come:
$('selector:data(key,value)')
forse relativa a http://stackoverflow.com/questions/13094777/find-elements -da-custom-dati-attributo-valore/13094850 # 13094850. – pimvdb
[Non è necessario impostare l'attributo '[data - *]' da JavaScript] (http://stackoverflow.com/questions/7261619/jquery-data-vs-attr/7262427#7262427). – zzzzBov