$(document).on('click','.classname',function(){}); VS $('.classname').on('click',function(){});

jquery中用on来绑定事件,经常的写法有
$(document).on('click','.classname',function(){});
$('.classname').on('click',function(){});

上面两种都是给类是classname的元素添加了click事件,那这两个写法有什么区别呢?在效率上哪个更好呢?

同样的,
$(document).on('click','#idname',function(){});
$('#idname').on('click',function(){});

这个是个id为idname的原始 绑定click事件,这两种写法又有什么不同呢?

$(document).on是把事件委托到了document上,$('#idname').on是把事件委托到了元素上面

 

$(document).on是把事件委托到document上,$('className').on是把事件绑定到.className元素上。效率方面,直接绑定在元素上会更为高效,绑定在document上,每次document有点击动作,浏览器都会判断当前点击的对象,如果匹配,再决定要不要执行,多了一个判断的环节。但在目前开发中,JS渲染效率很高,所以此异同基本可以忽略不计。此外,针对$(document).on的触发特点,延伸一下,$("className").on为onclick绑定,只有在页面onload的时候执行一次,当页面刷新后,新加载的具有className的元素便没有事件绑定到上面了,相反$(document).on这种方法会刷新和重新赋予绑定操作,所以一定程度上更为全面。

 

转载于:https://www.cnblogs.com/Syney/p/7840227.html

// 获取页面元素 const chatbot = document.getElementById('chatbot'); const chatHeader = document.getElementById('chat-header'); const chatClose = document.getElementById('chat-close'); const chatMessages = document.getElementById('chat-messages'); const chatInput = document.getElementById('chat-input'); const chatInputBox = document.querySelector('#chat-input input'); const chatSend = document.getElementById('chat-send'); // 客服自动回复 function chatbotReply(message) { const reply = '这是客服自动回复的消息:' + message; const received = document.createElement('div'); received.className = 'message received'; received.textContent = reply; chatMessages.appendChild(received); chatMessages.scrollTop = chatMessages.scrollHeight; } // 用户发送消息 function sendMessage() { const message = chatInputBox.value; if (!message) { return; } const sent = document.createElement('div'); sent.className = 'message sent'; sent.textContent = message; chatMessages.appendChild(sent); chatMessages.scrollTop = chatMessages.scrollHeight; chatInputBox.value = ''; chatbotReply(message); } // 关闭客服窗口 chatClose.addEventListener('click', function() { chatbot.style.display = 'none'; }); // 发送消息 chatSend.addEventListener('click', function() { sendMessage(); }); chatInputBox.addEventListener('keydown', function(event) { if (event.key === 'Enter') { sendMessage(); } }); // 显示客服窗口 window.addEventListener('load', function() { chatbot.style.display = 'block'; });这个代码要加到1哪里
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值