本文主要和大家分享jQuery常見面試題 ,要參加面試的朋友可以學習一下,希望能幫助大家。
$() 函數是 jQuery() 函數的別稱,乍看之下這很怪異,也讓 jQuery 程式碼晦澀難懂。一旦你適應了,你會愛上它的簡潔。 $() 函數用於將任何物件包裹成 jQuery 對象,接著你就被允許呼叫定義在 jQuery 物件上的多個不同方法。你甚至可以將一個選擇器字串傳入 $() 函數,它會傳回一個包含所有符合的 DOM 元素陣列的 jQuery 物件。這個問題我已經見過好幾次被提及,儘管它非常基礎,它經常被用來區分一個開發人員是否了解 jQuery。
元素,如何使用 jQuery來選擇它們? (答案)
另一個重要的 jQuery 問題是基於選擇器的。 jQuery 支援不同類型的選擇器,例如 ID 選擇器、class 選擇器、標籤選擇器。鑑於這個問題沒提到 ID 和 class,你可以用標籤選擇器來選擇所有的 p 元素。 jQuery 程式碼:$("p"),這樣會傳回一個包含所有 5 個 p 標籤的 jQuery 物件。更詳細的解答請參見上面連結的文章。
如果你用過 CSS,也許就知道 ID 選擇器和 class 選擇器之間的差異,jQuery 也是如此。 ID 選擇器使用 ID 來選擇元素,例如 #element1,而 class 選擇器使用 CSS class 來選擇元素。當你只需要選擇一個元素時,使用 ID 選擇器,而如果你想要選擇一組相同 CSS class 的元素,就要用 class 選擇器。在面試過程中,你有很大幾率會被要求使用 ID 選擇器和 class 選擇器來寫程式碼。下面的jQuery 程式碼使用了ID 選擇器和class 選擇器:
<span style="font-size: 14px;">$('#LoginTextBox') // Returns element wrapped as jQuery object with id='LoginTextBox'<br/>$('.active') // Returns all elements with CSS class active.<br/></span>
如你所見,從語法角度來說,ID 選擇器和class 選擇器的另一個不同之處是,前者用字符”#”而後者用字符”.”。更詳細的分析和討論請參見上面的答案連結。
这是一个事件处理问题。jQuery为按钮点击之类的事件提供了很好的支持。你可以通过以下代码去隐藏一个通过ID或class定位到的图片。你需要知道如何为按钮设置事件并执行hide() 方法,代码如下所示:
<span style="font-size: 14px;">$('#ButtonToClick').click(function(){<br/> $('#ImageToHide').hide();<br/>});<br/></span>
我喜欢这个问题,因为很贴近实际使用,代码也不复杂。
这个问题很重要,并且常常被问到。 ready() 函数用于在文档进入ready状态时执行代码。当DOM 完全加载(例如HTML被完全解析DOM树构建完成时),jQuery允许你执行代码。使用$(document).ready()的最大好处在于它适用于所有浏览器,jQuery帮你解决了跨浏览器的难题。需要进一步了解的用户可以点击 answer链接查看详细讨论。
这个问答是紧接着上一个的。JavaScript window.onload 事件和 jQuery ready 函数之间的主要区别是,前者除了要等待 DOM 被创建还要等到包括大型图片、音频、视频在内的所有外部资源都完全加载。如果加载图片和媒体内容花费了大量时间,用户就会感受到定义在 window.onload 事件上的代码在执行时有明显的延迟。
另一方面,jQuery ready() 函数只需对 DOM 树的等待,而无需对图像或外部资源加载的等待,从而执行起来更快。使用 jQuery $(document).ready() 的另一个优势是你可以在网页里多次使用它,浏览器会按它们在 HTML 页面里出现的顺序执行它们,相反对于 onload 技术而言,只能在单一函数里使用。鉴于这个好处,用 jQuery ready() 函数比用 JavaScript window.onload 事件要更好些。
这是面试里比较棘手的 jQuery 问题之一。这是个基础的问题,但是别期望每个 jQuery 初学者都知道它。你能用下面的 jQuery 选择器获取所有具备 multiple=true 的
<span style="font-size: 14px;">$('[name=NameOfSelectedTag] :selected')<br/></span>
这段代码结合使用了属性选择器和 :selected 选择器,结果只返回被选中的选项。你可按需修改它,比如用 id 属性而不是 name 属性来获取
each() 函数就像是 Java 里的一个 Iterator,它允许你遍历一个元素集合。你可以传一个函数给 each() 方法,被调用的 jQuery 对象会在其每个元素上执行传入的函数。有时这个问题会紧接着上面一个问题,举个例子,如何在 alert 框里显示所有选中项。我们可以用上面的选择器代码找出所有选中项,然后我们在 alert 框中用 each() 方法来一个个打印它们,代码如下:
<span style="font-size: 14px;">$('[name=NameOfSelectedTag] :selected').each(function(selected) {<br/> alert($(selected).text());<br/>});<br/></span>
其中 text() 方法返回选项的文本。
你可以用 jQuery 方法 appendTo() 将一个 HTML 元素添加到 DOM 树中。这是 jQuery 提供的众多操控 DOM 的方法中的一个。你可以通过 appendTo() 方法在指定的 DOM 元素末尾添加一个现存的元素或者一个新的 HTML 元素。
这是另一个关于选择器的 jQuery 面试题。就像其他问题那样,只需一行 jQuery 代码就能搞定。你可以使用下面这个 jQuery 代码片段来选择所有嵌套在段落( 标签)内部的超链接(标签)……
这对于很多 jQuery 初学者来说是一个棘手的问题,其实是个简单的问题。$(this) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)。
attr() 方法被用来提取任意一个HTML元素的一个属性的值. 你首先需要利用jQuery选择及选取到所有的链接或者一个特定的链接,然后你可以应用attr()方法来获得他们的href属性的值。下面的代码会找到页面中所有的链接并返回href值:
<span style="font-size: 14px;">$('a').each(function(){<br/> alert($(this).attr('href'));<br/>});<br/></span>
前面这个问题之后额外的一个后续问题是,attr()方法和jQuery中的其它方法一样,能力不止一样. 如果你在调用attr()的同时带上一个值 例如. attr(name, value), 这里name是属性的名称,value是属性的新值。
##儘管detach( ) 和remove() 方法都被用來移除一個DOM元素, 兩者之間的主要不同在於detach() 會保持對過去被解除元素的跟踪, 因此它可以被取消解除, 而remove() 方法則會保持過去被移除物件的參考. 你也還可以看看用來向DOM中添加元素的appendTo() 方法.
透過利用addClass() 和removeClass() 這兩個jQuery 方法。動態的改變元素的class屬性可以很簡單例如. 使用類別“.active"來標記它們的未激活和激活狀態,等等.
這是一個稍微高級點兒的jQuery問題。好吧,除了報錯節省伺服器頻寬以及更快的下載速度這許多的好處之外, 最重要的是,如果瀏覽器已經從同一個CDN下載類相同的jQuery 版本, 那麼它就不會再去下載它一次. 因此今時今日,許多公共的網站都將jQuery用於用戶交互和動畫, 如果瀏覽器已經有了下載好的jQuery庫,網站就能有非常好的展示機會。
17. jQuery.get() 和jQuery.ajax() 方法之間的差異是什麼?
ajax() 方法更強大,更具可配置性, 讓你可以指定等待多久,以及如何處理錯誤。 get() 方法是一個只取得一些資料的專門化方法。
18. jQuery 中的方法鍊是什麼?使用方法鏈有什麼好處?
方法鍊是對一個方法傳回的結果呼叫另一個方法,這使得程式碼簡潔明了,同時由於只對 DOM 進行了一輪查找,性能方面更加出色。
19. 你要是在一個 jQuery 事件處理程序裡回傳了 false 會怎麼樣?
這通常用於阻止事件向上冒泡。
20. 哪種方式更有效率:document.getElementbyId("myId") 還是 $("#myId")?
第一種,因為它直接呼叫了 JavaScript 引擎。
以上是jQuery常見面試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!