jQuery常用方法及其对ajax的实现

问答

1. Jquery 中, $(document).ready()是什么意思?和window.onload 的区别? 还有其他什么写法或者替代方法?

  • $(document).ready()是指在DOM文档树加载完成之后执行,并不是指整个文档。也可以写成:$().ready()或者$();。
  • window.onload是在dom文档树加载完和所有文件加载完之后执行。
  • $(document).ready()可以有多个,且不会覆盖,按照顺序来执行,而window.onload只能绑定一次,后面的会覆盖前面的。

2.$node.html()和$node.text()的区别?

  • $node.html()获取的是html节点内容,包括对应的标签会一起获取
  • $node.text()获取的是htmli里面的额文本内容,有值得花为设置文本内容

    3. $.extend 的作用和用法?

  • $.extend()将多个对象合并到一起,可以传入多个参数。$.extend([deep,] target,..)[deep,]为布尔值默认情况不是深拷贝,可设置true为深拷贝
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var object1 = {
    apple: 0,
    banana: { weight: 52, price: 100 },
    cherry: 97
    };
    var object2 = {
    banana: { price: 200 },
    durian: 100
    };
    $.extend( object1, object2 );////将object2合并到object1,浅拷贝

4. JQuery 的链式调用是什么?

  • 链式调用值得是jQuery方法调用的方法返回的也是一个JQuery对象,因此可以连续的调用下一个方法。
    1
    $("#Test").css('color','red').show(200).hide();;

5. JQuery ajax 中缓存怎样控制?

  • 在浏览器的一定时间内,如果url的第一次请求和第二次请求没有变化,浏览器会自动是用缓存内的数据.控制缓存通过cache 是否开启缓存,默认为true开启

    ajax中缓存针对当提交方式为get的情况下,两次url地址相同,第二次就不会提交到服务器上,而是直接调用上一次的数据。控制缓存可以用$.setup({cache:false})
    ,其原理是类似在请求中加时间戳,这样浏览器以为两次请求是不同的而不会去调用缓存,但时间戳并不影响数据的获取。

6. jquery 中 data 函数的作用

.data() 方法允许我们在DOM元素上绑定任意类型的数据,以键值对的方式绑定,可以循环引用。
我们可以在一个元素上设置不同的值,之后获取这些值:

1
2
3
4
5
6
$("body").data("foo", 52);
$("body").data("bar", { myType: "test", count: 40 });
$("body").data({ baz: [ 1, 2, 3 ] });

$("body").data("foo"); // 52
$("body").data(); // { foo: 52, bar: { myType: "test",

1. 写出以下jq方法

给元素 $node 添加 class active,给元素 $noed 删除 class active

1
2
$node.addClass("active");
$node.removeClass("active");

展示元素$node, 隐藏元素$node

1
2
$node.show();
$node.hide();

获取元素$node 的 属性: id、src、title, 修改以上属性

1
2
3
4
5
6
7
8
9
10
11
$node.attr('id');
$node.attr('src');
$node.attr('title');

//修改
$node.attr({
id:' img',
src:' 1.jpg',
title:' 饥人谷logo',
});
$node.attr('id','img');// 单独修改属性

给$node 添加自定义属性data-src

1
$node.attr('data-src','1.jpg');//自定义图片资源,用于懒加载当中,优化性能

在$ct 内部最开头添加元素$node

1
$ct.prepend($node);

在$ct 内部最末尾添加元素$node

1
$ct.append($node);

删除$node

1
$node.remove();//remove()可设置元素选择器过滤

把$ct里内容清空

1
2
$ct.empty();//把$ct内部的所有子元素清除掉,$ct本身还在,remove()把给元素及子元素删除
$ct.text("");/$ct.html("");//用赋值为空的方式清空内容

在$ct 里设置 html

1
$ct.html('<div class="btn"></div>');

获取、设置$node 的宽度、高度(分别不包括内边距、包括内边距、包括边框、包括外边距)

1
2
3
4
5
6
7
8
$node.width();    //获得宽度 不包括内边距 仅内容大小
$node.width(200); //设置宽度
$node.height(); //获得高度
$node.height(80); //设置高度
$node.innerWidth(); //包含内边距
$node.innerHeight();//包含内边距
$node.outerWidth(); //包含边框
$node.outerWidth(true); //包含外边距

获取窗口滚动条垂直滚动距离

1
$(document).scrollTop()

获取$node 到根节点水平、垂直偏移距离

1
2
3
$node.offset()//获取元素相对于document的偏移
$node.offset().top//获取垂直偏移距离
$node.offset().left//获取水平偏移距离

修改$node 的样式,字体颜色设置红色,字体大小设置14px

1
2
3
4
$node.css({
'color': 'red',
'font-size': '14px'
});

遍历节点,把每个节点里面的文本内容重复一遍

1
2
3
$.each($('p'),function (inde,ele) {
$(this).text($(this).text()+$(this).text());
})

从$ct 里查找 class 为 .item的子元素

1
$ct.find(".item");

获取$ct 里面的所有孩子

1
$ct.children();

对于$node,向上找到 class 为’.ct’的父亲,在从该父亲找到’.panel’的孩子

1
$node.parents('.ct').find('.panel');

获取选择元素的数量

1
$node.length;

获取当前元素在兄弟中的排行

1
$node.index();

2.简单实现以下操作

  1. 当点击$btn 时,让 $btn 的背景色变为红色再变为蓝色
  2. 当窗口滚动时,获取垂直滚动距离
  3. 当鼠标放置到$div 上,把$div 背景色改为红色,移出鼠标背景色变为白色
  4. 当鼠标激活 input 输入框时让输入框边框变为蓝色,当输入框内容改变时把输入框里的文2字小写变为大写,当输入框失去焦点时去掉边框蓝色,控制台展示输入框里的文字
  5. 当选择 select 后,获取用户选择的内容
    gitlab库链接

    3.用 jquery ajax 实现如下效果。当点击加载更多会加载数据展示到页面。当鼠标放置上去会变色

ajax实现

gitlab库链接,使用mock后台服务器

文章目录
  1. 1. 问答
    1. 1.1. 1. Jquery 中, $(document).ready()是什么意思?和window.onload 的区别? 还有其他什么写法或者替代方法?
    2. 1.2. 2.$node.html()和$node.text()的区别?
    3. 1.3. 3. $.extend 的作用和用法?
    4. 1.4. 4. JQuery 的链式调用是什么?
    5. 1.5. 5. JQuery ajax 中缓存怎样控制?
    6. 1.6. 6. jquery 中 data 函数的作用
  2. 2. 1. 写出以下jq方法
    1. 2.1. 给元素 $node 添加 class active,给元素 $noed 删除 class active
    2. 2.2. 展示元素$node, 隐藏元素$node
    3. 2.3. 获取元素$node 的 属性: id、src、title, 修改以上属性
    4. 2.4. 给$node 添加自定义属性data-src
    5. 2.5. 在$ct 内部最开头添加元素$node
    6. 2.6. 在$ct 内部最末尾添加元素$node
    7. 2.7. 删除$node
    8. 2.8. 把$ct里内容清空
    9. 2.9. 在$ct 里设置 html
    10. 2.10. 获取、设置$node 的宽度、高度(分别不包括内边距、包括内边距、包括边框、包括外边距)
    11. 2.11. 获取窗口滚动条垂直滚动距离
    12. 2.12. 获取$node 到根节点水平、垂直偏移距离
    13. 2.13. 修改$node 的样式,字体颜色设置红色,字体大小设置14px
    14. 2.14. 遍历节点,把每个节点里面的文本内容重复一遍
    15. 2.15. 从$ct 里查找 class 为 .item的子元素
    16. 2.16. 获取$ct 里面的所有孩子
    17. 2.17. 对于$node,向上找到 class 为’.ct’的父亲,在从该父亲找到’.panel’的孩子
    18. 2.18. 获取选择元素的数量
    19. 2.19. 获取当前元素在兄弟中的排行
  3. 3. 2.简单实现以下操作
  4. 4. 3.用 jquery ajax 实现如下效果。当点击加载更多会加载数据展示到页面。当鼠标放置上去会变色
,