2010-06-21 34 views
14

Tengo un código jQuery que está en cada página web del sitio (en el elemento principal).¿Cómo le digo a jQuery que ejecute una función solo en una página web específica?

¿Qué sintaxis de selector puedo usar para decirle a jQuery que cierta función solo debe ejecutarse en una página y no en todas las otras páginas del sitio?

¿Puedo especificar un nombre de página o URL en el selector de alguna manera?

Muchas Gracias

+0

no hay identificadores identificadores o clases (o nombres iguales) en el código de la página en este sitio. pero con tus ideas ... fue estúpido-fácil ... prueba condicional para la ruta y luego solo hazlo ... Gracias, tipos ... – Joseph

Respuesta

23

Puede usar una instrucción if que compruebe top.location.pathname.

if (top.location.pathname === '/my/path') 
{ 
    /* magic ... */ 
} 

O si lo desea para que sea más portátil y dar a la real, si la declaración algún significado (por lo que alguien leerlo sabrá de qué se trata) - si tiene acceso al elemento de cuerpo del documento, se puede agregue una clase que muestre que desea ejecutar este script.

Así por ejemplo, si /* magic ... */ en el ejemplo anterior tiene algo que ver con la inclusión de la API de Facebook, que podría hacer que su cuerpo se parece a <body class="has-facebook-api"> y luego hacer una verificación con jQuery:

$(function() // on document.ready() 
{ 
    if ($('body.has-facebook-api').length > 0) 
    { 
     /* magic ... */ 
    } 
}); 

asegurarse de que esto se ejecuta después de incluir jQuery dentro de una etiqueta de script separada.


Mientras estamos en ello, si no se está usando este script para transformar los elementos visuales de la página antes de que se emite, te aconsejo que para colocar la totalidad o la mayor parte de sus etiquetas script cerca de su pie de página para renderizar la página antes.

+3

Recomendaría agregar una clase o ID a la etiqueta física e ir desde allí. De esta forma, incluso si mueve su sitio o su estructura de archivos, aún funcionará. –

+1

No tengo acceso a nada más que a un elemento principal global para css/js ... así que lo que agrego es igual en todas las páginas ... de ahí la necesidad de detectar qué página está dirigida ... pero creo que hay una solución al acecho en toda esta gran idea .. gracias mucho – Joseph

1

quizá de verificación window.location.pathname?

if (window.location.pathname == "/path/to/page.html") { 
    callFunction(); 
} 
0

No se puede especificar la URL actual en un selector de jQuery, sin embargo, puede escribir un cheque simple usando el document.location objeto:

if (document.location.pathname == "/somefolder/somepage") { 
    // do some special stuff on this page! 
} 
0

Prefiero hacer cosas como esta en cualquier idioma que está escribiendo su App. su diseño/plantilla/lo que sea que está sirviendo su html podría simplemente salida de un verdadero/falso a una variable javascript

if ($page = '/foo/bar.html/') { 
    echo 'baz = true'; 
} else { 
    echo 'baz = false'; 
} 

Luego tienen su cheque Baz js para determinar si debe estar ejecutando estas funciones o no . No estás confiando al 100% en js en este caso, pero eso es mejor. Su servidor siempre sabrá en qué página/url está, y no tendrá que preocuparse por las incompatibilidades del navegador con su js tratando de determinar en qué página reside.

Cuestiones relacionadas