¿Qué mucha gente no parece darse cuenta de jQuery es que cuando hay varios selectores coincidentes, lo son funciones después de la lista de selección se llamará por separado de a uno en cada selector individual.
Así $("#identifier div:first, #identifier2")
coincidirá separado tanto:
$("#identifier div:first")
and
$("#identifier2")
Y, llamará a la función especificada fadeOut
y es controlador por separado para cada partido. Esto significa que cada controlador tendrá su propio valor this
establecido para que coincida con el selector coincidente.
internamente dentro de jQuery, hay un bucle como este pseudo-código que itera a través de todos los partidos selector devueltos y llama a la función siguiente en la cadena para cada uno:
for (var i = 0; i < matches.length; i++) {
jQuery["fadeOut"].call(matches[i], duration, easing, fn);
}
Si desea código separado para ser utilizado para los dos partidos diferentes, entonces podría ser mejor usar sólo dos estados separados jQuery:
$("#identifier div:first").fadeOut(300,function() {
// do stuff for #identifier div:first
});
$("#identifier2").fadeOut(300,function() {
// do stuff for #identifier2
});
Si usted tiene una gran cantidad de código en el bloque y es casi igual, entonces también puede ramificarse dentro de una bloque de código común:
$("#identifier div:first, #identifier2").fadeOut(300,function() {
if (this.id != "identifier2") {
// execute code that only applies to the #identifier match
}
// execute rest of common code
});
** this ** se refiere al elemento actual. Como el selector termina encontrando varios elementos, aplica la función ** fadeOut ** a cada uno. ¿Qué estás tratando de hacer exactamente? – alkos333
atenuar dos elementos, trabajar con ellos por separado y luego volver a fundirlos. Puedo lograr esto de otra manera, eso lo sé. Sin embargo, tengo curiosidad sobre cómo lo haría en esta mansión. – rlemon