Когда я нажимаю на div, этот div покрывается черной линией.
Но когда я нажимаю на любой другой div, мне нужен старый div, чтобы удалить эти черные линии, и только у current 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.info($(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);
Приведенный выше код запускается при щелчке правой кнопкой мыши.
Я хочу, чтобы когда я щелкнул правой кнопкой мыши div с идентификатором #addDiv, он должен удалить класс '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>
обновил мой код, пытаясь использовать этот $(event.target).siblings('.clickedDiv').removeClass('clickedDiv');, но эта строка не работает
K Итак, я все еще вижу, что вы привязываете событие contextmenu только к addDiv. Когда в вашем контексте написано when i click on any other div, i want the old div to remove those black lines and only the current div should have the border. Я думаю, вам также следует разместить здесь свой html
вы можете просто выбрать все div, содержащие класс clickedDiv, и добавить к элементу event.target. $(".clickedDiv").removeClass("clickedDiv"); $(event.target).addClass("clickedDiv");
Я обновил вопрос с помощью html-кода



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Добавьте второй класс ко всем 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.info($(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);
Вы должны использовать bind и on для регистрации слушателей событий.
Добавьте строку прослушивателя событий, пожалуйста, добавьте, без нее она не будет работать
без этой строки `addDiv.addEventListener (" contextmenu ", function (event) {` это не работает, при щелчке правой кнопкой мыши мое меню не появляется, вы можете войти в программу просмотра команды
не работает, дайте мне знать, сможете ли вы показать экран
«Уберите
clickedDivотовсюду». Вы имеете в виду#addDiv?