$('body')。addClass('done')似乎没有任何效果

时间:2012-03-26 23:02:44

标签: jquery

我正在阅读第二版动作中的jQuery,到目前为止真的很好,直到我遇到章节:3.3.2移动和复制元素,阅读有关复制和移动的内容。示例Chap-3 \ chapter3 \ lab.move.and.copy.html)有这样的陈述:

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

我不明白它在这个例子中做了什么,好像我把它评论出来,这个例子仍然可以正常工作。

另外,这两个陈述是做什么的?

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

本书的这一部分被掩盖了,而且写得不好。这必须通过对示例的解释进行扩展。谢谢。

2 个答案:

答案 0 :(得分:3)

$('body').addClass('done')正在完成它从the documentation所做的工作:将CSS类“完成”添加到body元素。如果你有与该课程相关的风格规则,你会看到差异;如果你不这样做,你就不会。这里我们有样式规则,如果它具有该类,则将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$)根据targets$中的值在operation上查找属性,然后将该属性的值作为函数调用,传入变量的值{ {1}}(不管是什么)。

答案 1 :(得分:0)

作为一个例子,我发现它有点缺乏,但它确实有现实世界的类比。我使用类似的东西,但是这个(参见注释)表示页面尚未完成。在很多情况下,它对用户来说价值不大,但只要它在那里就可以轻松添加。

我这样做的真正原因是自动化测试可以尽快导航网站。有些测试工具有一种讨厌的习惯,即当页面仍在渲染时会认为页面已加载,然后他们将无法尝试点击尚未存在的内容。在进行下一阶段的测试之前,我让自动化人员等待“完成”标志。效果很好,比“点击链接并等待10秒钟”快得多。

注意Bene:从Javascript向body元素添加CSS类现在被认为是糟糕的形式。这几乎意味着你将获得整个页面的重排。一般来说,这不是最明智的选择,但如果你已经在试图弥补一个缓慢的页面,那就更加诅咒了。