题目1: jQuery 中, $(document).ready()是什么意思?
.ready()
指的是当DOM准备就绪,指定一个函数来执行。js原生的load事件,要等DOM和图像完全加载才会触发。
使用.ready()
方法能够保证DOM准备好之后,就执行这个函数,因此,这里是绑定事件和运行jQuery代码最好的地方。
//下面两种语法等价
$(document).ready(handler)
$(handler)
题目2: $node.html()
和$node.text()
的区别?
.html()
获取第一个匹配元素的HTML内容,如果选择器匹配多于一个的元素,那么只有第一个匹配元素的HTML内容会被获取。
.text()
获取所有元素的匹配内容,结果是所有匹配元素包含的文本内容组合起来的文本。
题目3: $.extend 的作用和用法?
jQuery.extend( [deep,] target [, object1 ] [, objectN ] )
提供两个或多个对象,对象的所有属性都添加到目标对象。
如果只有一个参数提供给.extend()
,这意味着目标参数被省略。在这种情况下,jQuery对象本身被默认为目标对像。这样,我们可以在jQuery的命名空间下添加新功能。这对于插件开发者希望向jQuery中添加新函数时是很有用的。
目标对象(第一个对象)将被修改,并且通过$.extend()
返回。然而,如果我们想保留原对象,我们可以通过传递一个空对象作为目标对象:
var object = $.extend({}, object1, object2);
如果第一个对象的属性本身是一个对象或数组,那么它将完全用第二个对象相同的key重写一个属性。
题目4: jQuery 的链式调用是什么?
指多个方法可以链式调用,如:
$('div').find('h3').eq(2).html('Hello');
链式调用可以节省代码量,提高代码的效率。
题目5: jQuery 中 data 函数的作用
data()
函数用于在当前jQuery对象所匹配的所有元素上存取数据。将数据绑定在一个DOM上
通过data()
函数存取的数据都是临时数据,一旦页面刷新,之前存放的数据都将不复存在。
该函数属于jQuery对象(实例)。如果需要移除通过data()函数存放的数据,请使用removeData()
函数。
题目6:
写出以下功能对应的 jQuery 方法:
-
给元素
$node
添加class active
,给元素$node
删除class active
$node.addClass('active'); $node.removeClass('active');
-
展示元素
$node
, 隐藏元素$node
$node.hide(); $node.css("display","none");
-
获取元素
$node
的 属性: id、src、title, 修改以上属性$node.attr({ id: 'test', src: 'http://test.com', title: 'test', });
-
给
$node
添加自定义属性data-src
$node.attr('data-src', 'test')
-
在
$ct
内部最开头添加元素$node
$ct.prepend($node);
-
在
$ct
内部最末尾添加元素$node
$ct.append($node)
-
删除
$node
$node.remove();
-
把
$ct
里内容清空$ct.empty()
-
在
$ct
里设置 html<div class="btn"></div>
$ct.html('<div class="btn"></div>')
-
获取、设置
$node
的宽度、高度(分别不包括内边距、包括内边距、包括边框、包括外边距)//获取计算宽度值,height同理 $node.width() $node.height() //获取计算的内部宽度,包括padding,不包括border, innerHeight同理 $node.innerWidth() $node.innerHeight() //获取计算外部宽度,包括padding, border,和可选的margin,outerHeight同理 $node.outerWidth() $node.outerHeight()
-
获取窗口滚动条垂直滚动距离
$node..scrollTop()
-
获取
$node
到根节点水平、垂直偏移距离$node.offset().top; $node.offset().left;
-
修改
$node
的样式,字体颜色设置红色,字体大小设置14px$node.css({ color: "red", fontSize: "14px" });
-
遍历节点,把每个节点里面的文本内容重复一遍
$node.each(function(){ $(this).text($(this).text() + $(this).text()) })
-
从
$ct
里查找 class 为.item
的子元素$ct.find('.item')
-
获取
$ct
里面的所有孩子$ct.children()
-
对于
$node
,向上找到 class 为'.ct'的父亲,在从该父亲找到'.panel'的孩子$node.parents('.ct').find('.panel')
-
获取选择元素的数量
$node.length
-
获取当前元素在兄弟中的排行
$node.index()
题目7:
用jQuery实现以下操作
-
当点击
$btn
时,让$btn
的背景色变为红色再变为蓝色$btn.on('click', function(){ $this.css('background-color','red'); setTimeout(function(){ $btn.css('background-color', 'blue'); }, 200) })
-
当窗口滚动时,获取垂直滚动距离
$(window).scroll(function(){ console.log($(this).scrollTop()) })
-
当鼠标放置到
$div
上,把$div
背景色改为红色,移出鼠标背景色变为白色$div.on('mouseenter', function(){ $(this).css('background-color', 'red'); }).on('mouseleave', function(){ $(this).css('background-color', 'white'); })
-
当鼠标激活 input 输入框时让输入框边框变为蓝色,当输入框内容改变时把输入框里的文字小写变为大写,当输入框失去焦点时去掉边框蓝色,控制台展示输入框里的文字
$('input[type=text]').on('focus', function(){ $(this).css('border-color', 'blue') }).on('change', function(){ $(this).val($(this).val().toUpperCase()) }).on('blur', function(){ $(this).css('border-color', '') console.log($(this).val()) })
-
当选择 select 后,获取用户选择的内容
$select.val()