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(“…”)、函数(元素){/*您的逻辑在此…*/})