2010-04-22 9 views

Respuesta

23

esto parece un poco extraño, pero según los documentos .data() devuelve todos los campos de datos como un objeto, por lo que puede cambiar su valor directamente:

$('#id').data('counter', 0); 

Ambas opciones funcionan:

$('#id').data().counter++; 
$('#id').data()['counter'] += 5; 

Recuperar los datos de la declaración del valor esperado:.

alert($('#id').data('counter')); // 6 
+2

+1 Buena captura !! – Reigel

+1

Debido al rendimiento, debe evitar llamar a los datos dos veces, así que utilice esto en su lugar: http://stackoverflow.com/a/5656660/318765 – mgutt

2

creo que tendrá que leer el valor y escribir de nuevo, por lo que:

$(element).data('yourKey', $(element).data('yourKey') + 1); 

Después de todo, data() es una llamada a la función, e incrementando el resultado no modificará el valor en sí, que se encuentra en una estructura de datos jQuery interna.

4
var data = parseInt ($.data("data-attr")) + 1; 

$.data("data-attr",data); 
8

O bien, si el control de lo que va a guardar, almacenar una referencia de objeto para que pueda modificar los valores en el objeto directamente usando ++:

var $elem = $('<div>'); 
$elem.data('something', {value:1}); 
$elem.data('something').value++; 

console.log($elem.data('something').value); // 2 
+0

Gracias! Si bien mi manera de trabajar en este caso particular, la suya es la forma más de JavaScripty de hacerlo, y es la respuesta correcta para el caso general. El suyo puede ser incluso más corto si mantiene la referencia: 'var v = {value: 1}; $ elem.data ('algo', v); /*...*/ v.value ++; ' – Kobi

0

Es tan simple como el aumento de una variable, simplemente almacenar el valor .data(), incrementarlo y almacenar de nuevo en

Digamos que tiene un número establecido en la variable de datos NumbeR.

var myNumber = $(selector).data('NumbeR'); 
$(selector).data('NumbeR', myNumber++)