jquery中$(document).on的一些疑惑

在html的规范中,id是一个元素在整个源代码中独一无二的属性,而class做为css选择器,是为元素增加样式的手段,那么例如下面的结构:
<div id = ‘item’ class = ‘items’>
<div id = ‘item1’ class = ‘items’>
通过 KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲item1') 取到的就是id…(’.items’)取到的就是含有这个class=items的集合,class和id之间最主要的区别:在元素存在的情况下,id返回一个元素,class返回1个或更多元素


1,jquery中用on来绑定事件,经常的写法有
$(document).on(‘click’,’.classname’,function(){});
是把事件委托到了document上为每一个有calss=classname的元素,绑一个click事件
$(’.classname’).on(‘click’,function(){});
为每一个有calss=classname的元素,绑一个click事件直接作用于标签上。
$(document).on(‘click’,’#idname’,function(){});
是把事件委托到了document上为id=dname的元素,绑一个click事件
KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲idname').on('cl…(document).on()方法委托document,每次document有动作就为其添加事件

动态创建或者数据获取时绑定事件失败的原因(个人见解不一定对):
动态的获取的在获取时需要时间,但是在页面进行加载时body和script标签中的加载时同时进行的两者的
非动态获取数据的标签在先后顺序上时,那个标签在前那个就会优先于另一个先加载完,并且在页面加载的同时
也会将对应的事件进行绑定,所以对于动态获取数据,数据请求的标签块将会慢于其他非动态不需要请求数据的标签
因此在为这个动态标签绑定的事件先于其加载完成,但又因为动态数据没有获取完整就会导致此次事件的,如果是动态创建标签的话可能在事件绑定时会找不到对应的id或者class属性的值而绑定无效或者报错
绑定无效因此事件的点击就不会有预想的效果,此次的事件绑定为后加入的(无效)

解决方法:1,在此标签动态获取前进行事件绑定
// 2,$(document).on(“事件名称”,“需要绑定事件的标签 选择器”,function(){需要触发的绑定事件})


$().on()的知识点补充:
1.从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind()、 delegate()、 live()等事件函数。
 $().bind()直接绑定在元素上,和click,blur,mouseon一样点击事件。
 $().live()是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。
 $().delegate()是更精确的小范围的使用事件代理。
 $().on()结合了这三个方法的优势摒弃了劣势。
2.
该函数可以为同一元素、同一事件类型绑定多个事件处理函数。触发事件时,jQuery会按照绑定的先后顺序依次执行绑定的事件处理函数。

3. 阻止事件冒泡和事件委托的方法:
  return false。
   在事件的处理中,可以阻止默认事件和冒泡事件。
  event.preventDefault()
   在事件的处理中,可以阻止默认事件但是允许冒泡事发生。
  event.stopPropagation().。
   在事件的处理中,可以阻止冒泡但是允许默认事件的发生。
js中动态创建标签的三种方式:
document.write("<li>123</li>");
innerHTML = “<p>这是p标签</p>”;
document.createElement(“li”);创建<li>标签

不喜勿喷

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值