2011-08-11 31 views
13

İşte (sadece iki fonksiyon var.) Bu eklenti için dokümantasyon var http://tkyk.github.com/jquery-history-plugin/#documentationBu işlevde soru işareti ne anlama geliyor?

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

İşte html var:

<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

Olası kopyalar: http://stackoverflow.com/questions/1771786/question-mark-in-javascript http://stackoverflow.com/questions/1688337/javascript-if-alternative http://stackoverflow.com/ sorular/3322704/javascript-notasyon http://stackoverflow.com/questions/4278232/javascript-explanation-of-and http://stackoverflow.com/questions/6813840/what-does-this-javascript-code-do – JJJ

+0

Javascript'in temel üçlü operatörüdür http://msdn.microsoft.com/en-us/library/be21c7hw(v=vs.94).aspx – Devjosh

+0

[Javascript Ternary işleci] 'nin olası kopyası (http: // stackoverflow. com/q/1788917/693207) –

cevap

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

burada soru işareti, bir operasyon, Basitçe söylemek gerekirse, bu bir kısa, satır içi if deyimi ise bir üçlü olduğunu.

dışarı Expanded, tespit şöyle görünecektir:

soru işareti önce ifade doğru olarak değerlendirilirse, o zaman kolonun sol taraftaki kullanılır
if (url == "") 
    load("1"); 
else 
    load(url); 

, öyle aksi (eğer false) sağ taraf kullanılır. Bunu da yerleştirebilirsiniz, ancak her zaman iyi bir fikir değildir (okunabilirlik için).

+0

İyisin, tekrar teşekkürler – user784637

+0

Neden Curt'ın cevabı gibi hiçbir parantez yok? – Jarad

5

Onun steno için:

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

Yani. aksi halde, url + ".html" Bu ternary operation olduğunu

+0

Yani bunlar geri dönüş değerleri mi? Göndermiş gibi okuyabilirim, ama bana sözde kodu verebilir misin? – user784637

+0

Kafam karıştı, "geri dönüş" kelimesini içermek için uygun sözdizimi olmaz mıydı? – user784637

+0

Üçlü operatör olarak adlandırılır ve temel olarak koşullu bir ifade için kestirme bir yöntemdir - daha fazla bilgi için bkz http://en.wikipedia.org/wiki/Ternary_operation – simnom

2

yüklenecek, url"" eşitse o zaman, aksi takdirde "1" dönmek url sonra, 1.html yüklenecek "" eşitse, senin örnekte url

dönün.

+0

OMG !!! TEŞEKKÜRLER TEŞEKKÜRLER TEŞEKKÜRLER!!! BUNU ALDIM, BU LÜTFEN BU SORUNLARI ÇÖZMEDİ! – user784637