问号在这个函数中意味着什么?

use*_*637 15 javascript jquery

这是这个插件的文档(只有两个函数.) 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;
    });
});
Run Code Online (Sandbox Code Playgroud)

这是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>
Run Code Online (Sandbox Code Playgroud)

fox*_*oxy 27

load(url == "" ? "1" : url);
Run Code Online (Sandbox Code Playgroud)

这里的问号是三元的,如果操作,简单地说,它是一个简短的内联if语句.

扩展了,声明看起来像这样:

if (url == "")
    load("1");
else
    load(url);
Run Code Online (Sandbox Code Playgroud)

如果问号前的语句的计算结果为true,则使用冒号的左侧,否则(如果为false)则使用右侧.你也可以嵌套这个,虽然它并不总是一个好主意(为了可读性).

  • @Jarad如果在该块中仅执行一条语句,则不需要`{}`。要执行的语句不只一个,并且需要`{}` (2认同)

Cur*_*urt 5

它的简写:

If (url == ""){
   load("1");
}
else {
   load(url);
}
Run Code Online (Sandbox Code Playgroud)

IE浏览器.如果url等于""则返回"1",否则返回url

在你的例子中,如果url等于""那么,1.html将被加载,否则,url + ".html"将被加载