目录
  1. 1. jQuery库中的$()是什么
  2. 2. 如何找到所有HTML select标签的选中项
  3. 3. $(this)和this关键字在jQuery中有何不同?
  4. 4. jQuery有几种选择器
  5. 5. jQuery怎么移除标签onclick属性
  6. 6. jQuery中addClass,removeClass,toggleClass的使用
  7. 7. jQuery中的Delegate()函数有什么作用?
  8. 8. $(document).ready()方法和window.onload有什么区别?
  9. 9. 如何用jQuery禁用浏览器的前进后退按钮?
  10. 10. jquery中$.get()提交和$.post()提交有区别吗?
  11. 11. 写出一个简单的$.ajax()的请求方式?
  12. 12. jQuery的事件委托方法bind 、live、delegate、on之间有什么区别?
    1. 12.1. bind(jQuery 1.3之前)
    2. 12.2. live (jQuery 1.3之后)
    3. 12.3. delegate(jQuery 1.4.2中引入)
    4. 12.4. on (1.7版本整合了之前的三种方式的新事件绑定机制)
前端面试题-jQuery篇

jQuery库中的$()是什么

$()函数是 jQuery() 函数的别称。$()函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。你可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。

如何找到所有HTML select标签的选中项

javascript
1
$('[name=selectname] :selected')

$(this)和this关键字在jQuery中有何不同?

$(this) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。

而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)。

jQuery有几种选择器

  • 基本选择器:#id, class,element,*;
  • 层次选择器:parent>child,prev+next,prev~siblings
  • 基本过滤器选择器::first,:last,:not,:even,:odd,:eq,:gt,:lt
  • 内容过滤器选择器::contains,:empty,:has,:parent
  • 可见性过滤器选择器::hidden,:visible
  • 属性过滤器选择器: [attribute], [attribute=value], [attribute!=value], [attribute^=value], [attribute$=value], [attribute*=value]
  • 子元素过滤器选择器::nth-child, :first-child, :last-child, only-child
  • 表单选择器::input, :text, :password, :radio, :checkbox, :submit;
  • 表单过滤器选择器::enabled, :disabled, :checked, :selected

jQuery怎么移除标签onclick属性

获得a标签的onclick属性: $(“a”).attr(“onclick”)

删除onclick属性:$(“a”).removeAttr(“onclick”);

设置onclick属性:$(“a”).attr(“onclick”,”test();”);

jQuery中addClass,removeClass,toggleClass的使用

  • $(selector).addClass(class):为每个匹配的元素添加指定的类名
  • $(selector).removeClass(class):从所有匹配的元素中删除全部或者指定的类,删除class中某个值;
  • $(selector).toggleClass(class):如果存在(不存在)就删除(添加)一个类
  • $(selector).removeAttr(class);删除class这个属性;

jQuery中的Delegate()函数有什么作用?

delegate()会在以下两个情况下使用到:

  1. 如果你有一个父元素,需要给其下的子元素添加事件,这时你可以使用delegate()了,代码如下:

    javascript
    1
    $("ul").delegate("li", "click", function(){ $(this).hide(); });
  2. 当元素在当前页面中不可用时,可以使用delegate()

$(document).ready()方法和window.onload有什么区别?

  • window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的
  • $(document).ready() 方法可以在DOM载入就绪时就对其进行操纵,并调用执行绑定的函数。

如何用jQuery禁用浏览器的前进后退按钮?

javascript
1
<script type="text/javascript" language="javascript">
2
  $(document).ready(function() {
3
    window.history.forward(1);
4
      //OR window.history.forward(-1);
5
  });
6
</script>

jquery中$.get()提交和$.post()提交有区别吗?

  • 相同点:都是异步请求的方式来获取服务端的数据
  • 不同点:
    1. 请求方式不同:$.get()方法使用GET方法来进行异步请求的。$.post()方法使用POST方法来进行异步请求的。
    2. 参数传递方式不同:get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送到Web服务器的,这种传递是对用户不可见的。
    3. 数据传输大小不同:get方式传输的数据大小不能超过2kb,而post要大的多
    4. 安全问题:GET方式请求的数据会被浏览器缓存起来,因此有安全问题。

写出一个简单的$.ajax()的请求方式?

javascript
1
$.ajax({
2
    url:'http://www.baidu.com',
3
    type:'POST',
4
    data:data,
5
    cache:true,
6
    headers:{},
7
    beforeSend:function(){},
8
    success:function(){},
9
    error:function(){},
10
    complete:function(){}
11
});

jQuery的事件委托方法bind 、live、delegate、on之间有什么区别?

bind(jQuery 1.3之前)

定义与用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;

语法: bind(type,[data],function(eventObject()));

特点:

  1. 适用于页面元素静态绑定。只能给调用它的时候已经存在的元素绑定事件,不能给未来新增的元素绑定事件。
  2. 当页面加载完的时候,你才可以进行bind(),所以可能产生效率问题

实例如下

javascript
1
$("#members li a").bind("click",function (e) {});

live (jQuery 1.3之后)

定义与用法:主要是用于给选择到的元素上绑定事件类型的监听函数

语法:live(type,[data],fn)

特点:

  1. live方法并没有将监听器绑定在自己的(this)上,而是绑定在this.context上了
  2. live正是利用了事件委托机制来完成事件的监听处理,把节点的处理委托给了document,新添加的元素不必再绑定一次监听器。
  3. 使用live()方法但只能放在直接选择的元素后面,不能在层次比较深,连缀的DOM遍历方法后面使用,即$(“ul”").live...可以,但是$("body").find("ul").live...不行;

实例如下:

javascript
1
$( document ).on( "click", "#members li a", function( e ) {} );

delegate(jQuery 1.4.2中引入)

定义和用法:将监听事件绑定在就近的父级元素上

语法:delegate(selector,type,[data],fn)

特点:

  • 选择就近的父级元素,因为事件可以更快的冒泡上去,能够在第一时间进行处理。
  • 更精确的小范围使用事件代理,性能优于.live()。可以用在动态添加的元素上。

实例如下:

javascript
1
$("#info_table").delegate("td","click",function(){/*显示更多信息*/});
2
3
$("table").find("#info").delegate("td","click",function(){/*显示更多信息*/});

on (1.7版本整合了之前的三种方式的新事件绑定机制)

定义和用法:将监听事件绑定到指定元素上。

语法:on(type,[selector],[data],fn)

实例如下:

arcade
1
$("#info_table").on("click","td",function(){/*显示更多信息*/});

参数的位置写法与delegate不一样。

说明:on方法是当前JQuery推荐使用的事件绑定方法,附加只运行一次就删除函数的方法是one()。

总结:.bind(), .live(), .delegate(),.on()分别对应的相反事件为:.unbind(),.die(), .undelegate(),.off()

文章作者: Izzio
文章链接: https://izzio.netlify.com/blog/interview/25503.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Seventy
ENG