2011-03-23 17 views
7

Puedo agregar un evento click a un elemento HTML y tener la actualización de evento click$(document).data(key,value).jQuery data() y el evento 'changeData'

Esto entonces desencadenar $(document).bind('changeData', function() {...})). Sabiendo esto, ¿cuál sería la mejor manera de averiguar qué elemento HTML se actualizó $(document).data()?

Ej:

$(document).bind('changeData', function { 
    // get the anchor that set $(document).data() 
}); 

$('a').click(function() { 
    $(document).data('key', 'value'); 
}); 
+1

Yo sugeriría segunda respuesta de Robert Ross, pero ver a mi nota debajo. También tenga en cuenta que esta función no está documentada, por lo que debe considerarse experimental _Y_ puede ser eliminada en el futuro cercano. Esté atento [a este informe de errores aquí] (http://bugs.jquery.com/ticket/7877) – Scoobler

+0

, gracias por el aviso. – CoryDorning

+0

De hecho, el evento 'changeData' ahora está en desuso, como lo indica la respuesta de @ TankorSmash. – Antti29

Respuesta

3

Bueno para los datos de evento click:

$('#elementSelector').click(function(e){ 
    $(document).data(key, val); 
}); 

$(document).bind('changeData', function(e){ 
    // e.target? 
}); 

Si no, pruebe almacenar ese objetivo en los datos almacenados:

$('#elementSelector').click(function(e){ 
    $(document).data(key, { 
     val: 'value', 
     target: e.target 
    }); 
}); 

Luego, cuando se tener el evento de cambio:

$(document).bind('changeData', function(e){ 
    var data = $(this).data(key); 
    var target = data.target; 
    var value = data.val; 
}); 
+0

probé la primera opción pero e.target devuelve 'documento'. Sin embargo, me gusta la idea de su segunda opción. Eso puede funcionar! – CoryDorning

+0

Puede usar '$ (document) .bind ('changeData', function (e, key, value) .....' 'key' es la clave que se configuró,' value' es el valor que se configuró. – Scoobler

+0

@Scoobler que es interesante y funciona ... sin embargo, e todavía se refiere al 'documento' – CoryDorning

2

https://bugs.jquery.com/ticket/11718

de jQuery setData y changeData eventos han sido en desuso desde 1,8 y eliminado en 1.9. Esto significa que en 2.X y 3.X ya no puedes enlazar a estos eventos.

+0

se le pidió Esta pregunta justo antes de jQuery 1.6 fue lanzado ... – miken32

+0

con seguridad, pero acabo de pasar el tiempo tratando de averiguar por qué no estaba funcionando. Googleing "jquery changeData" no menciona que se elimine, ni tampoco documentos para 'jQuery.data()' ni los documentos de eventos. Tal vez valga la pena retomar la pregunta dado que no es la misma versión que el resto de nosotros. – TankorSmash