ホームページ > 記事 > ウェブフロントエンド > jQuery の面接でよくある質問
この記事では、主に jQuery の面接でよくある質問を紹介します。面接に参加したい友人がここから学ぶことができると幸いです。
$() 関数は jQuery() 関数の別名ですが、一見奇妙に見え、jQuery コードをわかりにくくしています。慣れてしまえば、そのシンプルさが気に入るはずです。 $() 関数は、任意のオブジェクトを jQuery オブジェクトにラップするために使用され、jQuery オブジェクトで定義された複数の異なるメソッドを呼び出すことができます。セレクター文字列を $() 関数に渡すこともでき、一致するすべての DOM 要素の配列を含む jQuery オブジェクトが返されます。この質問は何度か見たことがありますが、非常に基本的なものであるにもかかわらず、開発者が jQuery を知っているかどうかを区別するためによく使用されます。
jQuery に関するもう 1 つの重要な質問は、セレクター ベースです。 jQuery は、ID セレクター、クラス セレクター、タグ セレクターなど、さまざまなタイプのセレクターをサポートしています。質問ではIDとクラスについて言及していないため、タグセレクターを使用してすべての p 要素を選択できます。 jQuery コード: $("p")、5 つの p タグすべてを含む jQuery オブジェクトを返します。より詳細な答えについては、上記のリンク先の記事を参照してください。
CSSを使ったことがある人ならIDセレクターとクラスセレクターの違いはご存知かと思いますが、jQueryについても同様です。 ID セレクターは ID を使用して要素 (#element1 など) を選択しますが、クラス セレクターは CSS クラスを使用して要素を選択します。 1 つの要素のみを選択する必要がある場合は ID セレクターを使用し、同じ CSS クラスを持つ要素のグループを選択する場合はクラス セレクターを使用します。面接プロセス中に、ID セレクターとクラス セレクターを使用してコードを書くように求められる可能性が高くなります。次の jQuery コードでは、ID セレクターとクラス セレクターを使用しています:
<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 セレクターとクラス セレクターのもう 1 つの違いは、前者では文字 "#" が使用されることです。後者では、文字「.」を使用します。より詳細な分析と議論については、上記の回答リンクを参照してください。
这是一个事件处理问题。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 的 14270eeb917b9c0865f33d36f514ce27 标签的选中项:
<span style="font-size: 14px;">$('[name=NameOfSelectedTag] :selected')<br/></span>
这段代码结合使用了属性选择器和 :selected 选择器,结果只返回被选中的选项。你可按需修改它,比如用 id 属性而不是 name 属性来获取 221f08282418e2996498697df914ce4e 标签。
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 代码片段来选择所有嵌套在段落(e388a4556c0f65e1904146cc1a846bee标签)内部的超链接(3499910bf9dac5ae3c52d5ede7383485标签)……
这对于很多 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是属性的新值。
DOM 要素を削除するには両方のメソッドが使用されます。主な違いは、detach() メソッドはドッキング解除できるように過去の切り離された要素を追跡するのに対し、remove() メソッドは過去に削除されたオブジェクトへの参照を保持することです。追加の appendTo() メソッドを使用することもできます。
この 2 つの jQuery メソッドを使用します。要素のクラス属性を動的に変更することは、クラス「.active」を使用して非アクティブ状態とアクティブ状態などをマークするだけで簡単です。
これは、もう少し高度な jQuery の質問です。エラー報告、サーバー帯域幅の節約、ダウンロード速度の高速化などの多くの利点に加えて、最も重要なことは、ブラウザーが同じ CDN から同じ jQuery バージョンを既にダウンロードしている場合、それを再度ダウンロードしないことです。したがって、現在、多くの公開 Web サイトでは、ユーザー操作やアニメーションに jQuery が使用されており、ブラウザーに jQuery ライブラリがダウンロードされている場合、Web サイトは非常に優れた表示機会を得ることができます。
17. jQuery.get() メソッドと jQuery.ajax() メソッドの違いは何ですか?
ajax() メソッドはより強力で、待機時間を指定できます。エラーを処理します。 get() メソッドは、データを取得するだけの特殊なメソッドです。
18. jQuery のメソッドチェーンとは何ですか?メソッドチェーンを使用する利点は何ですか?
メソッドチェーンは、1 つのメソッドから返された結果に対して別のメソッドを呼び出すことで、コードが簡潔かつ明確になります。同時に、DOM 検索が 1 ラウンドだけ実行されるため、パフォーマンスが向上します。
19. jQuery イベントハンドラーで false を返すとどうなりますか?
これは通常、イベントのバブルアップを停止するために使用されます。
20. document.getElementbyId("myId") と $("#myId") のどちらの方が効率的ですか?
1 つ目は、JavaScript エンジンを直接呼び出すためです。
以上がjQuery の面接でよくある質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。