2012-03-26 105 views
-1

我正在閱讀jQuery in Action第2版,迄今爲止確實不錯,直到我遇到部分:3.3.2移動和複製元素,並閱讀有關複製和移動。這個例子CHAP-3 \第三章\ lab.move.and.copy.html)有這樣的說法:

$('body').addClass('done'); 

我不明白它是什麼在這個例子中這樣做,因爲如果我註釋掉,示例仍然工作得很好。

另外,這兩個陳述在做什麼?

var operation = $('[name=operations]:checked').val(); 
targets$[operation](sources$); 

本書的這一部分被掩蓋了,而且寫得不好。這個必須擴展並解釋這個例子。謝謝。

回答

3

$('body').addClass('done')正在從the documentation開始看起來像在做什麼:將CSS類「done」添加到body元素。如果您有與該課程相關的風格規則,您將看到不同之處;如果你不這樣做,你就不會。在這裏,我們有樣式規則的主體元素綠內將文本,如果它有一個類:http://jsbin.com/ijufis

回覆:

var operation = $('[name=operations]:checked').val(); 
targets$[operation](sources$); 

由於沒有讀過書,我只能告訴你這些線路正在做的:

  1. $('[name=operations]:checked').val()越來越名爲operations複選框的值,但只有當它的檢查(它,否則返回undefined)。

  2. targets$[operation](sources$)正在建立基於在operation價值上targets$的屬性,然後調用一個函數,屬性值,傳遞變量source$的值(無論是)。

+0

對不起,我知道.addClass是幹什麼的。但是,這個陳述在這個例子中做了什麼?如果我刪除它,該示例工作得很好,沒有明顯的缺陷。 – 2012-03-26 23:09:53

+0

@KishorPatel:正如我所說的那樣,它正在做文檔所說的。我不能說出本書期望它做什麼。 – 2012-03-26 23:10:46

+0

謝謝T.J,幫助很大! – 2012-03-26 23:12:12

0

作爲一個例子,我覺得它有點欠缺,但它確實有真實世界的類比。我使用這樣的東西,但不是這(見注)表明該頁面還沒有完成。在許多情況下,它對用戶來說價值不大,但是一旦它在那裏就可以輕鬆添加。

我這樣做的真正原因是自動化測試可以儘可能快地瀏覽網站。一些測試工具有一個令人討厭的習慣,認爲頁面在渲染時會被加載,然後他們會嘗試點擊一些還沒有的東西。在進行下一個測試階段之前,我有自動化人員等待「完成」標誌。工作得很好,比「點擊鏈接並等待10秒」快得多。

注意Bene:現在,將Javascript類中的CSS類添加到body元素中被認爲是糟糕的形式。這幾乎意味着你將會得到整個頁面的迴流。一般來說,這並不是最明智的選擇,但如果你已經試圖彌補一個緩慢的頁面,那麼雙重詛咒就會受到影響。

相關問題