问题引出:
事件委托是一种非常常用的事件解决方案,也是很多人推荐作为首选的解决方案(事件委托有什么好处,为何推荐,跟本文要说的内容无关,可自行百度)。我们在事件处理的时候可能会这么用$selector.off(相关参数).on(相关参数)以防止重复委托事件。结果发现这种使用方式并不能起到防止重复委托事件的效果。先来个例子
<
div
id
=
'test'
>
<
div
id
=
"subTest"
>
</
div
>
</
div
>
</
body
>
这里subTest所在元素是一个动态创建的元素。然后我们希望在创建subTest的时候,给subTest绑定一个点击事件,假设是通过
create=function()
$("#test").html("<div id='subTest'></div>");
$("#test").off().on("click","#subTest",function()
console.log("事件绑定");
如果调用两次create,再点击subTest,会发现点击一次,而控制台连续输出两次“事件绑定”,即off并未解除委托的事件。
问题解决:
1、在销毁subTest的时候,test也一起销毁,这样被委托到test的事件会跟着test的销毁而解除。这样只要在 下次调用create之前,先创建好test,并保证在事件委托前,test在页面是存在的即可
2、在创建subTest的时候,给subTest添加onclick属性,即上面
$("#test").html("<div id='subTest'></div>")
这句代码改为
$("#test").html("<div onclick='yourFunction()' id='subTest'></div>")
然后定义一个全局的yourFunction函数即可
jquery事件委托off与on连用无效的问题: 问题引出: 事件委托是一种非常常用的事件解决方案,也是很多人推荐作为首选的解决方案(事件委托有什么好处,为何推荐,跟本文要说的内容无关,可自行百度)。我们在事件处理的时候可能会这么用$selector.off(相关参数).on(相关参数)以防止重复委托事件。结果发现这种使用方式并不能起到防止重复委托事件的效果。先来个例子<body>
本文实例讲述了JQuery事件委托原理与用法。分享给大家供大家参考,具体如下:
事件委托就是利用事件冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作。事件委托首先可以极大的减少事件绑定次数,其次也可以让新加入的子集元素也拥有相同的操作。
一般绑定事件的写法以及事件冒泡
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>Title</title>
</head>
<style type="text/css">
.list{
background-color: gol
首先说一下这块的逻辑,在点完四个下拉框之后,“胶凝材料用量标准值”会根据四个下拉框的值从数据库查一下所对应的数据,如果有,则显示,没有,则弹出提示框。
代码(设计业务原因,可能看起来略微费劲):
function changeValue(){
$[removed]("click",'#lyysb a',function(){
if(!$(this).hasClass('cur')){
$(this).addClass('cur');
} else {
$(this).removeClass('cur');
on() 方法在被选元素及子元素上添加一个或多个事件处理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。
注意:使用 on() 方法添加的事件处理程序适用于
on、off、onejQuery1.7 以后推出了.on()和.off()方法,替代之前的方法。on/off整合了bind、unbind、事件委托等方法
on替代bind方法on可以替代bind方法,使用方法和bind一致// 绑定单个事件
$(":button").on("click",function(){
alert("on");
});// 传递数据
自从jquery1.7以来,on事件添加到这个版本,使得事件的绑定变的十分简单,用过jquery的人都说好,相信对off,on方法爱不释手。下面是我总结出来的on,off的使用语法,希望对小伙伴有帮助。
on() 使用场景最多
最简单的写法
$(&quot;ul li&quot;).on(&quot;click&quot;,function(){
alert(&quot;不响应事件!&q
jQuery 事件委托就是将事件监听器绑定到包含这些元素的父元素上,而不是将事件绑定到每个元素上。这样做的好处是,如果有新的子元素加入到父元素中,它们也能够触发绑定在父元素上的事件。
例如,如果你想给所有的按钮都绑定一个点击事件,但是这些按钮是动态生成的,你可以这样做:
$("body").on("click", "button", function() {
// 处理按钮点击事件
这样,无论何时有新的按钮加入到文档中,它们都能够触发绑定在 body 元素上的点击事件。