Tengo un problema, al tratar de pasar variable a través de jQery:
A través de PHP y un for generó un listado de enlaces de personas con 2 variables nombre y apellido, hasta aquí todo bien, si sigues el enlace te lleva a la ficha de la persona, ahora bien el problema empezo cuando quise cambiar el title del head con el nombre y apellidos de la persona, esto con jQuery se puede hacer y funciona, pero el problema es cuando dentro de la ficha de la persona hay enlace a otras fichas estas al cargar el usuario el title se queda con los datos de la anterior ficha, esto ocurre porque el data-nombre y el data-apellido, son la misma variable.
Cuando en la página principal (el listado de personas) género a través del for los enlaces estas 2 variables, se llaman igual pero cuando a través del DOM paso las variable jQuery pilla las 2 primeras variables por defecto del listado, pongo un ejemplo para que se me entienda
<a href="ficha.php" class="ficha" data-nombre="Pepito" data-apellidos="De los Palotes">Pepito De los Palotes</a>
<a href="ficha.php" class="ficha" data-nombre="Juan" data-apellidos="Garcia Jimenez">Juan Garcia Jimenez</a>
<a href="ficha.php" class="ficha" data-nombre="Antonio" data-apellidos="Martinez Soriano">Antonio Martínez Soriano</a>
<a href="ficha.php" class="ficha" data-nombre="Pepe" data-apellidos="Perez Menendez">Pepe Perez Menendez</a>
<a href="ficha.php" class="ficha" data-nombre="Alberto" data-apellidos="Molina Perez">Alberto Molina Pérez</a>
Si clicko en Alberto Molina Pérez los datos que devuelve son Pepito De los Palotes, en todas las ocasiones, esto lo solucione poniendo un contador
$contador = 0;
for(...) {
data-contador="<?php echo $contador; ?>"
data-nombre<?php echo $contador; ?>="<?php echo $nombre; ?>"
data-apellidos<?php echo $contador; ?>="<?php echo $apellidos; ?>"
$contador++;
}
Hasta aquí bien, esto también funciona, devuelve esto:
<a href="ficha.php" data-contador="0" class="ficha0" data-nombre0="Pepito" data-apellidos0="De los Palotes">Pepito De los Palotes</a>
<a href="ficha.php" data-contador="1" class="ficha1" data-nombre1="Juan" data-apellidos1="Garcia Jimenez">Juan Garcia Jimenez</a>
<a href="ficha.php" data-contador="2" class="ficha2" data-nombre2="Antonio" data-apellidos2="Martinez Soriano">Antonio Martínez Soriano</a>
<a href="ficha.php" data-contador="3" class="ficha3" data-nombre3="Pepe" data-apellidos3="Perez Menendez">Pepe Perez Menendez</a>
<a href="ficha.php" data-contador="4" class="ficha4" data-nombre4="Alberto" data-apellidos4="Molina Perez">Alberto Molina Pérez</a>
El contador es necesario ya que el código se genera de forma variable, no se sabe cuántas fichas y enlaces hay y aunque se supiese es absurdo tener que llamar a cada variable manualmente (que se puede hacer)
El código jQuery sería:
$(document).ready(function() {
$("body").on("click", "a", function(event) {
event.preventDefault();
var clase = $(this,"a").prop("class");
contador = $(clase).data('contador');
var nombre = $(clase).data('nombre' + contador);
var apellidos = $(clase).data('apellidos' + contador);
document.title = nombre + ' ' + apellidos;
});
});
Como vengo diciendo esto funciona, pero el problema como comentaba es cuando dentro de la ficha de una persona hay enlace a otras fichas, para que lo entendais, dentro de la ficha de Pepito De los Palotes hay un enlace que apunta Alberto Molina Pérez, Alberto al ser un único enlace su código sería:
<a href="ficha.php" data-contador="0" class="ficha0" data-nombre0="Alberto" data-apellidos0="Molina Perez">Alberto Molina Pérez</a>
y aquí viene el problema, porque Pepito era:
<a href="ficha.php" data-contador="0" class="ficha0" data-nombre0="Pepito" data-apellidos0="De los Palotes">Pepito De los Palotes</a>
Si os fijais las variables son las mismas, estuve dándole vueltas al asunto de como solucionar esto, cambie el nombre de la clase de los enlaces de dentro de la ficha, pero nada y al final a través de PHP se me ocurrió utilizar un número aleatorio que no se repitiese, así sería complicado que se diese lo de antes y funcionó genera números aleatorios de este tipo:
<a href="ficha.php" data-contador="567" class="ficha567" data-nombre567="Alberto" data-apellidos567="Molina Perez">Alberto Molina Pérez</a>
<a href="ficha.php" data-contador="234" class="ficha234" data-nombre234="Pepito" data-apellidos234="De los Palotes">Pepito De los Palotes</a>
Pero cual fue mi sorpresa, que a la hora de aplicarlo seguía sin funcionar, s clickas en el listado a Pepito el title cambia a Pepito, pero si dentro de la ficha de Pepito clickas en Alberto, en el title sigue apareciendo Pepito.
Y ya no se a que se debe este problema y cómo resolverlo a ver si me podeis echar una mano espero haberme explicado bien.
Saludos