$() 函数是 jQuery() 函数的别称,乍一看这很怪异,还使 jQuery 代码晦涩难懂。一旦你适应了,你会爱上它的简洁。$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被容许调用定义在 jQuery 对象上的多个不一样方法。你甚至能够将一个选择器字符串传入 $() 函数,它会返回一个包含全部匹配的 DOM 元素数组的 jQuery 对象。这个问题我已经见过好几回被说起,尽管它很是基础,它常常被用来区分一个开发人员是否了解 jQuery。面试
另外一个重要的 jQuery 问题是基于选择器的。jQuery 支持不一样类型的选择器,例如 ID 选择器、class 选择器、标签选择器。鉴于这个问题没提到 ID 和 class,你能够用标签选择器来选择全部的 div 元素。jQuery 代码:$("div"),这样会返回一个包含全部 5 个 div 标签的 jQuery 对象。更详细的解答参见上面连接的文章。ajax
若是你用过 CSS,你也许就知道 ID 选择器和 class 选择器之间的差别,jQuery 也一样如此。ID 选择器使用 ID 来选择元素,好比 #element1,而 class 选择器使用 CSS class 来选择元素。当你只须要选择一个元素时,使用 ID 选择器,而若是你想要选择一组具备相同 CSS class 的元素,就要用 class 选择器。在面试过程当中,你有很大概率会被要求使用 ID 选择器和 class 选择器来写代码。下面的 jQuery 代码使用了 ID 选择器和 class 选择器:数组
$('#LoginTextBox') // Returns element wrapped as jQuery object with id='LoginTextBox'
$('.active') // Returns all elements with CSS class active.
正如你所见,从语法角度来讲,ID 选择器和 class 选择器的另外一个不一样之处是,前者用字符”#”然后者用字符”.”。更详细的分析和讨论参见上面的答案连接。浏览器
这是一个事件处理问题。jQuery为按钮点击之类的事件提供了很好的支持。你能够经过如下代码去隐藏一个经过ID或class定位到的图片。你须要知道如何为按钮设置事件并执行hide() 方法,代码以下所示:服务器
$('#ButtonToClick').click(function(){app
$('#ImageToHide').hide();
});
我喜欢这个问题,由于很贴近实际使用,代码也不复杂。ide
这个问题很重要,而且经常被问到。 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 的 <select > 标签的选中项:
$('[name=NameOfSelectedTag] :selected')
这段代码结合使用了属性选择器和 :selected 选择器,结果只返回被选中的选项。你可按需修改它,好比用 id 属性而不是 name 属性来获取 <select> 标签。
each() 函数就像是 Java 里的一个 Iterator,它容许你遍历一个元素集合。你能够传一个函数给 each() 方法,被调用的 jQuery 对象会在其每一个元素上执行传入的函数。有时这个问题会紧接着上面一个问题,举个例子,如何在 alert 框里显示全部选中项。咱们能够用上面的选择器代码找出全部选中项,而后咱们在 alert 框中用 each() 方法来一个个打印它们,代码以下:
$('[name=NameOfSelectedTag] :selected').each(function(selected) {
alert($(selected).text());
});
其中 text() 方法返回选项的文本。
你能够用 jQuery 方法 appendTo() 将一个 HTML 元素添加到 DOM 树中。这是 jQuery 提供的众多操控 DOM 的方法中的一个。你能够经过 appendTo() 方法在指定的 DOM 元素末尾添加一个现存的元素或者一个新的 HTML 元素。
这是另外一个关于选择器的 jQuery 面试题。就像其余问题那样,只需一行 jQuery 代码就能搞定。你可使用下面这个 jQuery 代码片断来选择全部嵌套在段落(<p>标签)内部的超连接(标签)……
这对于不少 jQuery 初学者来讲是一个棘手的问题,实际上是个简单的问题。$(this) 返回一个 jQuery 对象,你能够对它调用多个 jQuery 方法,好比用 text() 获取文本,用val() 获取值等等。而 this 表明当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)。
attr() 方法被用来提取任意一个HTML元素的一个属性的值. 你首先须要利用jQuery选择及选取到全部的连接或者一个特定的连接,而后你能够应用attr()方法来得到他们的href属性的值。下面的代码会找到页面中全部的连接并返回href值:
$('a').each(function(){
alert($(this).attr('href'));
});
前面这个问题以后额外的一个后续问题是,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库,网站就能有很是好的展现机会。
ajax() 方法更强大,更具可配置性, 让你能够指定等待多久,以及如何处理错误。get() 方法是一个只获取一些数据的专门化方法。
方法链是对一个方法返回的结果调用另外一个方法,这使得代码简洁明了,同时因为只对 DOM 进行了一轮查找,性能方面更加出色。
这一般用于阻止事件向上冒泡。
第一种,由于它直接调用了 JavaScript 引擎。xxxxxxxxxx var a = { x: 'mx', y: function(a, b) { console.log(this.x); console.log(a+b); }}var b = a.y;b.call(a, 1, 2); // mx 3b.apply(a, [1, 2]); // mx 3b.bind(a, 1, 2)() // mx 3b.bind(a, 1)(2) // mx 3 js