2011-11-05 44 views
0

我正在看這個代碼,並有幾個問題。我做了一些挖掘jQuery基礎知識手冊和谷歌,但沒有找到一個簡單的答案。試圖找出jQuery的語法

這是完整的代碼

function slideSwitch() 
{ 
    var $active = $('#slideshow IMG.active'); 

    if ($active.length == 0) $active = $('#slideshow IMG:last'); 

    var $next = $active.next().length ? $active.next() 
    : $('#slideshow IMG:first'); 


    $active.addClass('last-active'); 

    $next.css({opacity: 0.0}) 
     .addClass('active') 
     .animate({opacity: 1.0}, 1000, function() { 
      $active.removeClass('active last-active'); 
      }); 
} 

令我驚訝的是,他做內聯的第一件事if語句W/O支架,這很酷,我不知道你能做到這一點。但是,它是遵循良好的編碼標準還是沒有關係?

也是他聲明var $ next的下一行。我從來沒有看到過這種情況的變量。我猜他說的是輸入$ active.next(),如果長度是0而不是$ active.next()將成爲幻燈片中的第一個img。我不太清楚操作數的含義。

有什麼見解?

回答

3

這令我的第一件事情是他做的內聯if語句W/O支架

我想你的意思括號{}

這很酷,我不知道你可以做到這一點。但是,它是遵循良好的編碼標準還是沒有關係?

它通常被認爲是糟糕的代碼風格。稍後再過來向if分支添加更多代碼並且沒有意識到使用了大括號語法太容易了。

JSLint會抱怨。

此外,他聲明var $ next的下一行。我從來沒有看到過這種情況的變量。

這是一個conditional (ternary) operator

return condition ? expr1 : expr2 

等同於:

if (condition) { 
    return expr1; 
} else { 
    return expr2; 
} 

所有這一切是JavaScript的。它與jQuery庫無關。

+0

是不是使用jQuery庫的選擇器? – Brodie

+0

@Brodie - 你不是在問選擇者。 – Quentin

2

好像你需要使用條件語句複習:

  1. 如果在條件評估爲真/非零執行一個語句的標準。一個陳述可以就是這樣 - 一個陳述或括號內的幾個陳述。
  2. A ternary conditional expression用於分配目的。它需要一個條件,對它進行評估,如果它評估爲真/非零,則返回?之後的第一個表達式。如果不是,則在:之後返回表達式。

只使用單個語句來使用if是有道理的,儘管語句通常被推送到下一行並且爲了可讀性而縮進。

只要它不包含使可讀性成爲挑戰的嵌套表達式,就可以使用三元組。