2012-03-26 65 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元素中被认为是糟糕的形式。这几乎意味着你将会得到整个页面的回流。一般来说,这并不是最明智的选择,但如果你已经试图弥补一个缓慢的页面,那么双重诅咒就会受到影响。

相关问题