2011-08-11 1 views
13

est ici la documentation de ce plugin (Il n'y a que deux fonctions.) http://tkyk.github.com/jquery-history-plugin/#documentationQue signifie le point d'interrogation dans cette fonction?

$(document).ready(function() { 
    function load(num) { 
     $('#content').load(num +".html"); 
    } 

    $.history.init(function(url) { 
     load(url == "" ? "1" : url); 
    }); 

    $('#ajax-links a').live('click', function(e) { 
     var url = $(this).attr('href'); 
     url = url.replace(/^.*#/, ''); 
     $.history.load(url); 
     return false; 
    }); 
}); 

Voici le html:

<body> 
    <h1>jQuery History Plugin Ajax Sample</h1> 
    <div id="ajax-links"> 
    <ul> 
     <li><a href="#1">load 1.html</a></li> 
     <li><a href="#2">load 2.html</a></li> 
     <li><a href="#3">load 3.html</a></li> 
    </ul> 
    <div id="content"></div> 
    <hr /> 
    </div> 
    <p>[<a href="../">All samples</a>] [<a href="http://github.com/tkyk/jquery-history-plugin">Project home</a>]</p> 
</body> 
+1

Copies possibles: http://stackoverflow.com/questions/1771786/question-mark-in-javascript http://stackoverflow.com/questions/1688337/javascript-if-alternative http://stackoverflow.com/ questions/3322704/javascript-notation http://stackoverflow.com/questions/4278232/javascript-explanation-of-and http://stackoverflow.com/questions/6813840/what-does-this-javascript-code-do – JJJ

+0

C'est l'opérateur ternaire de base de javascript référez-vous http://msdn.microsoft.com/en-us/library/be21c7hw(v=vs.94).aspx – Devjosh

+0

Copie possible de [Javascript Ternary operator] (http: // stackoverflow. com/q/1788917/693207) –

Répondre

22
load(url == "" ? "1" : url); 

La marque est question ici d'un ternaire si l'opération, tout simplement, il est une courte déclaration en ligne if.

élargi sur, la déclaration ressemblerait à quelque chose comme ceci:

if (url == "") 
    load("1"); 
else 
    load(url); 

Si la déclaration avant le point d'interrogation est évaluée à true, le côté gauche du côlon est utilisé, sinon (si elle est false) le côté droit est utilisé. Vous pouvez également imbriquer ceci, bien que ce ne soit pas toujours une bonne idée (pour la lisibilité).

+0

Vous êtes bon, merci encore – user784637

+0

Pourquoi pas d'accolades comme la réponse de Curt? – Jarad

5

Son raccourci pour:

If (url == ""){ 
    load("1"); 
} 
else { 
    load(url); 
} 

Ie. Si url égal "" puis revenez "1", sinon, retour url

Dans votre exemple, si le url égal "" alors, 1.html sera chargée, sinon, url + ".html" sera chargée

+0

Donc, ce sont les valeurs de retour? Je peux le lire comme vous l'avez posté, mais pouvez-vous me donner le pseudo code? – user784637

+0

Je suis confus, la syntaxe correcte ne serait-elle pas d'inclure le mot "retour"? – user784637

+0

Il est appelé un opérateur ternaire et est essentiellement une méthode sténographique pour une déclaration conditionnelle - plus d'infos sur http://en.wikipedia.org/wiki/Ternary_operation – simnom