这段javascript代码正确吗?

这段javascript代码正确吗?,javascript,Javascript,我试图在单击具有特定类的元素时删除一个类。我制作了这个javascript,它确实有效。但是这样做的语法正确吗?这样能更有效吗 // Clear notifications alerts $(document).on('click', '.js-clear-notifications', function() { $('.AlertNotifications').remove(); }); // clear inbox alerts $(document).on('click', '.j

我试图在单击具有特定类的元素时删除一个类。我制作了这个javascript,它确实有效。但是这样做的语法正确吗?这样能更有效吗

// Clear notifications alerts 
$(document).on('click', '.js-clear-notifications', function() {
  $('.AlertNotifications').remove();
});

// clear inbox alerts
$(document).on('click', '.js-clear-inbox', function() {
  $('.AlertInbox').remove();
});  

我编辑这篇文章是为了回应评论中的反馈

如果您希望使用AlertNotifications类删除所有元素(代码就是这样做的),那么您所拥有的是正确的

如果您只想删除类(这是文章中所说的),那么您想要的是removeClass,而不是remove:

    $('.js-clear-notifications').on('click',function() {
        $(this).removeClass('AlertNotificitions');
    }

对我来说,更合适的方法是这样:

...
$('.js-clear-inbox').on('click', function() {
  $('.AlertInbox').remove();
});  
...
我还建议使用更具体的选择器,例如

$('div .js-clear-inbox') 

我希望这会有所帮助。

如果您已经定义了变量,那么从DOM中删除它的正确方法是:

var elem = document.getElementById("myDiv");
elem.remove();
$('.js-clear-notifications').on('click', function() {
  $('.AlertNotifications').remove();
});

但如果您刚刚开始,.remove将是您最好的意见。

您的javascript代码是正确的,前提是您也加载了jQuery

此外,您还有最有效的解决方案,即使用单个事件处理程序来处理源自多个元素的事件

另一种选择是:

var elem = document.getElementById("myDiv");
elem.remove();
$('.js-clear-notifications').on('click', function() {
  $('.AlertNotifications').remove();
});

它附加的事件处理程序数量与jQuery对象中的元素数量相同。效率稍低,但除非在极端情况下,否则您可能永远不会注意到。

这不是真正的主题,您没有问题,所以问这个问题没有意义。具体来说,你问的是“效率”。对于这样一个简单的代码片段,效率是一个完全可以忽略不计的因素。您只需附加事件处理程序,您希望我们告诉您什么?答案很简单:“是的,它是正确的”。我只是想知道如果使用if/else循环是否会更有效。我不确定是否允许它使用2次:$(文档)('click',…不要猜测答案中想要的行为,作者已经声明他的代码按照他希望的方式为他工作。“我试图在单击具有特定类的元素时删除一个类。”。OP就是这么说的,为什么这是他希望得到答案的假设?很公平:这很混乱。但是既然OP提到代码有效,从DOM中删除元素确实是理想的行为。您的建议实际上比原始代码更糟糕,请参阅我的答案。为什么更糟?您假设了功能,并且如何知道单击的元素具有作者想要删除的类?他附加了一个处理程序来单击所有元素的事件。他使用filter参数指定选择器。你不知道它是一个
div
,那么为什么建议他在选择器中包含
div
?他没有说目标元素太多……据我所知,你刚刚发明了一个不存在的问题。我没有建议使用“div”,我说使用mo更有效关于特定的选择器(作者问他的解决方案是否有效)。因此“div”只是一个示例,因此出现了“i.e”。感谢您的支持confirmation@nuet:请记住,只有在执行时存在
.js clear notifications
时,此选项才会起作用(之后不会动态创建该元素)。如果是这样的话,这个解决方案会更有效,因为你只监听此类元素的点击,而不是像你在问题中发布的代码那样监听整个文档。@blex此外,任何新的
.js clear notification
元素都不会有点击处理程序,需要重新绑定。这添加了一个陷阱,即您必须小心不要将额外的处理程序附加到已有的元素。在我看来,原始代码具有最大的优势。
.remove()
不是合适的本机javascript,因此您的代码甚至无法工作。此外,它似乎与问题完全无关。