Javascript jQuery确认vs vanilla JS确认
这是我的密码Javascript jQuery确认vs vanilla JS确认,javascript,jquery,Javascript,Jquery,这是我的密码 var elems = document.querySelectorAll('.confirmation'); elems.forEach(element => { element.addEventListener('click', function(e) { return confirm('Are you sure you want to delete it?'); }); }); $('.confirmation').on('click', functi
var elems = document.querySelectorAll('.confirmation');
elems.forEach(element => {
element.addEventListener('click', function(e) {
return confirm('Are you sure you want to delete it?');
});
});
$('.confirmation').on('click', function() {
return confirm('Are you sure?');
});
它所做的是抓取某些元素并停止在后端运行的delete
函数。现在。它在jQuery
版本中工作。它在Vanilla
版本中不起作用。在Vanilla
中,即使我在确认框中单击取消,它仍然会删除该字段<另一方面,code>JQuery停止代码
我在vanilla JS中是否有什么地方做错了,或者jQuery在后台是否有一些“魔力”?这与确认无关,它的工作方式是一样的;这是关于jQuery提供的语法。这是关键区别: 从事件处理程序(使用jQuery设置)返回false将自动调用
event.stopPropagation()
和event.preventDefault()
相反,使用本机API设置的事件侦听器没有此功能。要使用它,您必须稍微修改代码:
element.addEventListener('click', function(e) {
var confirmation = confirm('Are you sure you want to delete it?');
if (!confirmation) {
e.stopPropagation();
}
});
它是
stopPropagation()
,而不是preventDefault()
,因为我假设删除代码实际上是另一个click
处理程序集,在始终存在的父元素上使用委托技术。它不是关于确认,它的工作方式相同;这是关于jQuery提供的语法。这是关键区别:
从事件处理程序(使用jQuery设置)返回false将自动调用event.stopPropagation()
和event.preventDefault()
相反,使用本机API设置的事件侦听器没有此功能。要使用它,您必须稍微修改代码:
element.addEventListener('click', function(e) {
var confirmation = confirm('Are you sure you want to delete it?');
if (!confirmation) {
e.stopPropagation();
}
});
它是
stopPropagation()
,而不是preventDefault()
,因为我假设删除代码实际上是另一个click
处理程序集,在始终存在的父元素上设置了委托技术。您可以向我们展示执行删除过程的代码吗?请注意,并非所有浏览器都支持forEach()
在从querySelectorAll()返回的集合上执行。请尝试[].forEach.call(document.queryselectoral(“…”)、函数(元素){/*您的逻辑在此…*/})
您可以向我们展示执行删除过程的代码吗?请注意,并非所有浏览器都支持querySelectorAll()
返回的集合上的forEach()
。请尝试[].forEach.call(document.queryselectoral(“…”)、函数(元素){/*您的逻辑在此…*/})代码>