20个最常见的jQuery面试问题及答案
毫无疑问,jQuery给了JavaScript急需的提振,这是一门如此有用,但同时总是常常被低估的语言.在jQuery粉墨登场之前,我们曾经会写出冗长的JavaScript代码,不仅仅为更大型的应用程序,有时即使是更小的应用程序也要如此.那种代码常常是既难以阅读又难以维护的.
在使用这个优秀的库之前写过原生的JavaScript,仅仅在用过它的一个月之后,我就能意识到jQuery的真正力量.鉴于它的巨大人气,有关jQuery的面试问题,以及有关HTML和JavaScript的数量在任何web开发者面试中有所增加.因为jQuery相对较新,大多数面试所涉及的问题都是围绕核心的jQuery库的,包括选择器,DOM操作以及jQuery基础.
在本篇文章中,我要向HTML和JavaScript开发人员分享20个在不同面试遇到的jQuery问题。这里面的一些问题也许同样会在那些要求同时进行服务端(Spring,Servlet和JSP)和客户端(HTML,CSS,JavaScript和jQuery)的开发JavaWeb开发面试中涉及。
如果你正要去面试一个职位,它需要你拥有多项技能,比如:Java、jQuery,它并不是希望你明白jQuery每一个细微的细节,或对其有全面的了解,但是如果你是要面试一个真正的客户端开发职位,你就需要积累更多高级的有技巧性的jQuery问题,而不限于本文列举的这些问题。不过,你可以通过本文来快速的温习那些jQuery面试中经常被提到的问题,而且它们大多也适用于有2到5年经验的web开发人员,特别是Java领域。
jQuery面试问题和答案
JavaScript是客户端脚本的标准语言,而jQuery使得编写JavaScript更加简单。你可以只用写几行的jQuery代码就能实现更多的东西.它是最常被用到的JavaScript库之一,并且现在已经很少有不用jQuery而使用原生JavaScript的新项目了。这对于作为一个Javaweb开发者的你而言意味着你会在一场Javaweb开发面试中发现许多jQuery的面试问题.
早些时候,绝大部分都是HTTP,HTML,CSS以及JavaScript,但最近开始,除了JavaScript基础之外,人们也希望知道你是否熟悉jQuery。这16个jQuery的问题是为web开发者准备的,且也能够非常方便你在参加一次电话或者视频一轮的面试之前纠正一些关键的概念。如果你是jQuery新手,那么它也能够帮助你更加好的理解基础知识,并激励你去发现更多东西。
1.jQuery库中的$()是什么?(答案如下)
$()函数是jQuery()函数的别称,乍一看这很怪异,还使jQuery代码晦涩难懂。一旦你适应了,你会爱上它的简洁。$()函数用于将任何对象包裹成jQuery对象,接着你就被允许调用定义在jQuery对象上的多个不同方法。你甚至可以将一个选择器字符串传入$()函数,它会返回一个包含所有匹配的DOM元素数组的jQuery对象。这个问题我已经见过好几次被提及,尽管它非常基础,它经常被用来区分一个开发人员是否了解jQuery。
2.网页上有5个 另一个重要的jQuery问题是基于选择器的。jQuery支持不同类型的选择器,例如ID选择器、class选择器、标签选择器。鉴于这个问题没提到ID和class,你可以用标签选择器来选择所有的div元素。jQuery代码:$("div"),这样会返回一个包含所有5个div标签的jQuery对象。更详细的解答参见上面链接的文章。 3.jQuery里的ID选择器和class选择器有何不同?(答案) 如果你用过CSS,你也许就知道ID选择器和class选择器之间的差异,jQuery也同样如此。ID选择器使用ID来选择元素,比如#element1,而class选择器使用CSSclass来选择元素。当你只需要选择一个元素时,使用ID选择器,而如果你想要选择一组具有相同CSSclass的元素,就要用class选择器。在面试过程中,你有很大几率会被要求使用ID选择器和class选择器来写代码。下面的jQuery代码使用了ID选择器和class选择器: 正如你所见,从语法角度来说,ID选择器和class选择器的另一个不同之处是,前者用字符”#”而后者用字符”.”。更详细的分析和讨论参见上面的答案链接。 4.如何在点击一个按钮时使用jQuery隐藏一个图片? 这是一个事件处理问题。jQuery为按钮点击之类的事件提供了很好的支持。你可以通过以下代码去隐藏一个通过ID或class定位到的图片。你需要知道如何为按钮设置事件并执行hide()方法,代码如下所示: 我喜欢这个问题,因为很贴近实际使用,代码也不复杂。 5.$(document).ready()是个什么函数?为什么要用它?(answer) 这个问题很重要,并且常常被问到。ready()函数用于在文档进入ready状态时执行代码。当DOM完全加载(例如HTML被完全解析DOM树构建完成时),jQuery允许你执行代码。使用$(document).ready()的最大好处在于它适用于所有浏览器,jQuery帮你解决了跨浏览器的难题。需要进一步了解的用户可以点击answer链接查看详细讨论。 6.JavaScriptwindow.onload事件和jQueryready函数有何不同?(答案) 这个问答是紧接着上一个的。JavaScriptwindow.onload事件和jQueryready函数之间的主要区别是,前者除了要等待DOM被创建还要等到包括大型图片、音频、视频在内的所有外部资源都完全加载。如果加载图片和媒体内容花费了大量时间,用户就会感受到定义在window.onload事件上的代码在执行时有明显的延迟。 另一方面,jQueryready()函数只需对DOM树的等待,而无需对图像或外部资源加载的等待,从而执行起来更快。使用jQuery$(document).ready()的另一个优势是你可以在网页里多次使用它,浏览器会按它们在HTML页面里出现的顺序执行它们,相反对于onload技术而言,只能在单一函数里使用。鉴于这个好处,用jQueryready()函数比用JavaScriptwindow.onload事件要更好些。 7.如何找到所有HTMLselect标签的选中项?(答案如下) 这是面试里比较棘手的jQuery问题之一。这是个基础的问题,但是别期望每个jQuery初学者都知道它。你能用下面的jQuery选择器获取所有具备multiple=true的 这段代码结合使用了属性选择器和:selected选择器,结果只返回被选中的选项。你可按需修改它,比如用id属性而不是name属性来获取 8.jQuery里的each()是什么函数?你是如何使用它的?(答案如下) each()函数就像是Java里的一个Iterator,它允许你遍历一个元素集合。你可以传一个函数给each()方法,被调用的jQuery对象会在其每个元素上执行传入的函数。有时这个问题会紧接着上面一个问题,举个例子,如何在alert框里显示所有选中项。我们可以用上面的选择器代码找出所有选中项,然后我们在alert框中用each()方法来一个个打印它们,代码如下: 其中text()方法返回选项的文本。 9.你是如何将一个HTML元素添加到DOM树中的?(答案如下) 你可以用jQuery方法appendTo()将一个HTML元素添加到DOM树中。这是jQuery提供的众多操控DOM的方法中的一个。你可以通过appendTo()方法在指定的DOM元素末尾添加一个现存的元素或者一个新的HTML元素。 10.你能用jQuery代码选择所有在段落内部的超链接吗?(答案略) 这是另一个关于选择器的jQuery面试题。就像其他问题那样,只需一行jQuery代码就能搞定。你可以使用下面这个jQuery代码片段来选择所有嵌套在段落( 标签)内部的超链接(标签)…… 11.$(this)和this关键字在jQuery中有何不同?(答案如下) 这对于很多jQuery初学者来说是一个棘手的问题,其实是个简单的问题。$(this)返回一个jQuery对象,你可以对它调用多个jQuery方法,比如用text()获取文本,用val()获取值等等。而this代表当前元素,它是JavaScript关键词中的一个,表示上下文中的当前DOM元素。你不能对它调用jQuery方法,直到它被$()函数包裹,例如$(this)。
$('#LoginTextBox')//ReturnselementwrappedasjQueryobjectwithid='LoginTextBox'
$('.active')//ReturnsallelementswithCSSclassactive.
$('#ButtonToClick').click(function(){
$('#ImageToHide').hide();
});
$('[name=NameOfSelectedTag]:selected')
$('[name=NameOfSelectedTag]:selected').each(function(selected){
alert($(selected).text());
});