Что означает знак вопроса в этой функции?
Вот документация для этого плагина (там всего две функции.)
http://tkyk.github.com/jquery-history-plugin/#documentation
$(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;
});
});
Здесь 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="#" onclick="location.href='http://github.com/tkyk/jquery-history-plugin'; return false;">Project home</a>]</p>
</body>
Ответы
Ответ 1
load(url == "" ? "1" : url);
Значок вопроса здесь является тройной, если операция, просто говоря, это short, inline if
statement.
Развернутый, выражение будет выглядеть примерно так:
if (url == "")
load("1");
else
load(url);
Если выражение перед вопросительным знаком равно true, то используется левая часть двоеточия, иначе (если оно ложно) используется правая сторона. Вы можете также вложить это, хотя это не всегда хорошая идея (для читаемости).
Ответ 2
Сокращение для:
If (url == ""){
load("1");
}
else {
load(url);
}
Т.е. Если url
равно ""
, верните "1"
, в противном случае верните url
В вашем примере, если url
равно ""
, тогда будет загружен 1.html
, в противном случае будет загружен url + ".html"
Ответ 3
Это тройная операция.