Javascript removeClass然后addClass不工作

Javascript removeClass然后addClass不工作,javascript,jquery,html,Javascript,Jquery,Html,当我单击一个div时,该div被一条黑线覆盖 但是当我单击任何其他div时,我希望旧div删除那些黑线,并且只有当前div应该有边框。以下是我试图遵循的代码: var addDiv = document.getElementById("addDiv"); addDiv.addEventListener("contextmenu", function(event) { event.preventDefault(); if ($(event.target).hasClass('conte

当我单击一个div时,该div被一条黑线覆盖

但是当我单击任何其他div时,我希望旧div删除那些黑线,并且只有
当前div
应该有边框。以下是我试图遵循的代码:

var addDiv = document.getElementById("addDiv");

addDiv.addEventListener("contextmenu", function(event) {
  event.preventDefault();

  if ($(event.target).hasClass('context_menu')) {
    $(event.target).siblings('.clickedDiv').removeClass('clickedDiv');
    $(event.target).addClass('clickedDiv');
    console.log($(event.target).addClass('clickedDiv'));
  } else {
    $(event.target).parent().addClass('clickedDiv');
  }

  $("#ctxMenu").css({
    'top': event.pageY,
    'left': event.pageX
  }); // only this line to be added
  $("#ctxMenu").show();
}, false);

addDiv.addEventListener("click", function(event) {
  $("#ctxMenu").hide();
}, false);
右键单击会触发上述代码

我想,当我右键单击id为
#addDiv
的div时,它应该从任何地方删除'clickedDiv'类,然后继续执行代码,在单击的div上添加该类

我的html代码:

<div id="addDiv" [innerHtml]="divCode | noSanitize"></div>
<div id="ctxMenu" style="display:none">
  <ul id="ctxImage" style="display:none">
    <li (click)="clone()">Clone</li>
    <li (click)="changeImg()">Change Image</li>
  </ul>
</div>

    克隆 更改图像

向所有div添加第二个类,然后从第二个类的每个成员中删除clickedDiv类

比如:

$(".clickableDiv").on("contextmenu", function() {
    $(".clickableDiv").removeClass("clickedDiv");
    $(this).addClass("clickedDiv");
});
以及HTML:

<div class="clickableDiv" id="div_1"></div>
<div class="clickableDiv" id="div_2"></div>
<div class="clickableDiv" id="div_3"></div>

将代码更新为以下内容:

$("#addDiv").bind("contextmenu",function(event){
    event.preventDefault();

    if($(event.target).hasClass('context_menu')){
        $(event.target).siblings('.clickedDiv').removeClass('clickedDiv');
        $(event.target).addClass('clickedDiv');
        console.log($(event.target).addClass('clickedDiv'));
}
else{
  $(event.target).parent().addClass('clickedDiv');
}

    $("#ctxMenu").css({'top':event.pageY,'left':event.pageX});   // only this line to be added
    $("#ctxMenu").show();
},false);

$('#addDiv').on("click",function(event){
    $("#ctxMenu").hide();
},false);

您应该使用绑定和上的注册事件侦听器。

“从所有位置删除
单击EdDiv
”。你的意思是
#addDiv
?更新了我的代码,尝试使用
$(event.target).同级('.clickedDiv')。removeClass('clickedDiv')但是这行不起作用,所以我仍然看到您仅在
addDiv
上绑定
contextmenu
事件。当我单击任何其他div时,当上下文显示
时,我希望旧div删除那些黑线,并且只有当前div应该有边框
。我认为你也应该在这里发布你的html,你可以简单地选择所有包含class
clickedDiv的div,然后添加到
event.target
元素中<代码>$(“.clickedDiv”)。删除类(“clickedDiv”)$(event.target).addClass(“clickedDiv”)
我已经用html codeAdd事件监听器行更新了问题,请添加,没有它,它将无法工作没有这行`addDiv.addEventListener(“contextmenu”,函数(事件){`这不工作,右键单击我的菜单不来,你能不能来团队视图不工作,让我知道你是否可以进行屏幕共享