Tengo una función que quita la id de youtube de una url. Entonces quiero usar esta función 10 veces por página (en el bucle wordpress).¿Cómo puedo hacer que una función definida en jQuery.ready esté disponible globalmente?
La función funciona muy bien cuando le doy la URL dentro de mis etiquetas de script de función, pero cuando comienzo un nuevo conjunto de etiquetas de script dentro del ciclo, no funciona.
Necesito saber cómo puedo usar mi función sin declararlo todo primero.
Así que este es el código que tengo en la cabecera:
<script type="text/javascript">
$(document).ready(function() {
var getList = function(url, gkey){
var returned = null;
if (url.indexOf("?") != -1){
var list = url.split("?")[1].split("&"),
gets = [];
for (var ind in list){
var kv = list[ind].split("=");
if (kv.length>0)
gets[kv[0]] = kv[1];
}
returned = gets;
if (typeof gkey != "undefined")
if (typeof gets[gkey] != "undefined")
returned = gets[gkey];
}
return returned;
};
// THIS WORKS
alert(getList('http://www.youtube.com/watch?v=dm4J5dAUnR4', "v"));
});
Pero cuando intento utilizar esto en otro lugar de la página, que no funciona.
<script type="text/javascript">
$(document).ready(function() {
alert(getList('http://www.youtube.com/watch?v=dm4J5dAUnR4', "v"));
};
</script>
Firebug me da getList no se define lo cual tiene sentido, porque no lo es. ¿Puedo declarar "globalmente" esta función?
Lo siento por el formato pobre, cada vez que edito el código, resulta extraño. El código es válido – wesbos
Una cosa, por cierto, declararlo dentro de document.ready significa que está definido solo cuando el documento está listo (después de cargar la página), por lo que debe llamar a la función cuando esté seguro de que está definida. Declararlo como un objeto global puede no ser suficiente si la declaración en sí se ejecuta después de intentar usarlo. –