2011-08-11 14 views
13

Aquí está la documentación para este plugin (Hay solamente dos funciones.) http://tkyk.github.com/jquery-history-plugin/#documentation¿Qué significa el signo de interrogación en esta función?

$(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; 
    }); 
}); 

Aquí está el 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

Posibles duplicados: http://stackoverflow.com/questions/1771786/question-mark-in-javascript http://stackoverflow.com/questions/1688337/javascript-if-alternative http://stackoverflow.com/ preguntas/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

Este es el operador ternario básico de javascript referir http://msdn.microsoft.com/en-us/library/be21c7hw(v=vs.vvs.94).aspx – Devjosh

+0

Posible duplicado de [operador Javascript Ternary] (http: // stackoverflow. com/q/1788917/693207) –

Respuesta

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

El signo de interrogación que aquí hay una ternario si el funcionamiento, En pocas palabras, se trata de un corto , en línea if comunicado.

Ampliado a cabo, la declaración sería algo como esto:

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

Si la declaración ante el signo de interrogación se evalúa como verdadera, entonces el lado izquierdo del colon se utiliza, en caso contrario (si es falso) se usa el lado derecho. También puede anidar esto, aunque no siempre es una buena idea (para legibilidad).

+0

Estás bien, gracias de nuevo – user784637

+0

¿Por qué no hay llaves como la respuesta de Curt? – Jarad

5

Su abreviatura de:

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

Ie. Si es igual a url"" luego regresar "1", de lo contrario, volver url

En su ejemplo, si el url es igual a "" entonces, 1.html se cargarán, de lo contrario, se cargará url + ".html"

+0

¿Entonces esos son los valores de retorno? Puedo leerlo tal como lo has publicado, pero ¿puedes darme el pseudo código? – user784637

+0

Estoy confundido, ¿no sería la sintaxis correcta incluir la palabra "devolver"? – user784637

+0

Se llama un operador ternario y es básicamente un método de taquigrafía para una declaración condicional: más información en http://en.wikipedia.org/wiki/Ternary_operation – simnom

Cuestiones relacionadas