2010-06-21 2 views
14

J'ai du code jQuery sur chaque page web du site (dans l'élément head).Comment puis-je dire à jQuery d'exécuter une fonction uniquement sur une page Web spécifique?

Quelle syntaxe de sélecteur puis-je utiliser pour indiquer à jQuery qu'une certaine fonction ne doit s'exécuter que sur une page et non sur toutes les autres pages du site? Puis-je spécifier un nom de page ou une URL dans le sélecteur d'une manière ou d'une autre?

Merci beaucoup

+0

Il n'y a aucun ID ou classe d'identification (ou nom pair) dans le code de page sur ce site. mais avec vos idées .. c'était stupide-facile .. test conditionnel pour le chemin d'accès et puis juste le faire .. Merci, mecs .. – Joseph

Répondre

23

Vous pouvez utiliser une instruction if pour vérifier top.location.pathname.

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

Ou si vous voulez, si la déclaration un peu de sens rendre plus portable et donner la réelle (si quelqu'un lisant saura de quoi il parle) - si vous avez accès à l'élément de corps du document, vous pouvez ajoutez une classe indiquant que vous voulez exécuter ce script.

Ainsi, par exemple, si /* magic ... */ dans l'exemple ci-dessus a quelque chose à voir avec notamment l'API Facebook, vous pouvez faire de votre corps ressembler <body class="has-facebook-api"> et ensuite faire un chèque avec jQuery:

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

Assurez-vous que ce s'exécute après avoir inclus jQuery dans une balise de script distincte.


Alors que nous sommes, si vous ne l'utilisez ce script pour transformer les visuels de votre page avant qu'il ne soit sorti, je vous conseille de placer tout ou la plupart de vos balises de script près de votre pied de page pour rendre la page plus tôt.

+3

Je recommanderais d'ajouter une classe ou un id à l'étiquette du corps et d'aller de là. De cette façon, même si vous déplacez votre site ou votre structure de fichier, cela fonctionnera toujours. –

+1

Je n'ai accès à rien d'autre qu'un élément de tête global pour css/js .. donc ce que j'ajoute est le même sur chaque page ... d'où le besoin de sentir quelle page est visée .. mais je pense qu'il y a une solution se cache dans toutes ces grandes idées .. merci beaucoup – Joseph

1

Peut-être vérifier window.location.pathname?

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

Vous ne pouvez pas spécifier l'URL actuelle dans un sélecteur jQuery, vous pouvez cependant écrire une simple vérification en utilisant l'objet document.location:

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

Je préfère faire des choses comme ça dans la langue que vous écrivez votre app. votre mise en page/modèle/whatever qui sert votre html pourrait simplement sortir un vrai/faux à une variable JavaScript

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

ont ensuite votre chèque js baz pour déterminer si vous devez exécuter ces fonctions ou non . Vous ne comptez pas 100% sur js dans ce cas, mais imo c'est mieux. Votre serveur va toujours savoir à quelle page/URL vous vous trouvez, et vous n'aurez pas à vous soucier des incompatibilités de navigateur avec votre js essayant de déterminer sur quelle page il réside.

Questions connexes