Javascript removeClass然后addClass不工作
当我单击一个div时,该div被一条黑线覆盖 但是当我单击任何其他div时,我希望旧div删除那些黑线,并且只有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
应该有边框。以下是我试图遵循的代码:
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,你可以简单地选择所有包含classclickedDiv的div,然后添加到event.target
元素中<代码>$(“.clickedDiv”)。删除类(“clickedDiv”)$(event.target).addClass(“clickedDiv”)
我已经用html codeAdd事件监听器行更新了问题,请添加,没有它,它将无法工作没有这行`addDiv.addEventListener(“contextmenu”,函数(事件){`这不工作,右键单击我的菜单不来,你能不能来团队视图不工作,让我知道你是否可以进行屏幕共享