У меня есть событие onClick для флажков в таблице - нажатие на поле добавляет текст флажка к отдельному элементу div («Список избранного»).
Однако у меня также есть контекстное меню, и одна из его опций выбора «Установить как избранное» не делает то же самое.У меня есть имя faveFunc
, которое было создано для использования функции как в флажках, так и в контекстном меню, но что-то не так, когда я не смог заставить последний работать.
На основе моего кодаЯ верю , что функциональность обоих должна быть одинаковой, но мне не повезло.Поэтому мне интересно, есть ли проблема с самим контекстным меню, а не с функцией фаворита.Есть мысли?
JSFiddle (неправильно показывает данные JSON. Посмотрим, смогу ли я жестко закодировать в них данные таблицы)
Контекстное меню JS:
$('#km-table-id > tbody > tr').on('click', function(e){
console.log('clicked', this); // works on left click
})
///// Show menu /////
$("#km-table-id").on("contextmenu", function(evt) {
evt.preventDefault();
$(".custom-menu")
.show()
.css({ top: evt.pageY, left: evt.pageX });
///// Close menu /////
$("#km-table-id").on("mousedown", function(evt) {
if (!$(evt.target).parents(".custom-menu").length > 0) {
$(".custom-menu").hide(50);
}
})
console.log("click detected"); // works on right click
});
Функциональность My Favorites:
function faveFunc(evt) {
var anchor = $($(evt.target).prev().find("a")[0]).clone();
switch($(".populate-faves").find("a:contains(" + $(anchor).text() + ")").length)
{
case 0:
$(".populate-faves").append(anchor);
break;
default:
$(".populate-faves > a:contains(" + $(anchor).text() + ")").remove();
break;
}
}; // ------------ faveFunc
function newList() {
let data = $(evt.target).prev().find("a").eq(0).html();
let outputList = $(".populate-faves");
$(".populate-faves").html("");
$("#km-table-id tbody tr").each(function(i, el) {
let fave = $(".checkbox-class", el);
let itemText = $(data, el);
if(fave.prop("checked")) {
outputList.append("<li>" + itemText.html() + "</li>");
}
});
};
$(".checkbox-class").on("click", faveFunc);
$("#add-id").on("click", faveFunc);
Контекстное меню HTML:
<ul class="custom-menu">
<li data-action="open" id="open-id">Open Document</li>
<li data-action="add" id="add-id">Set As Favorite</li>
<li data-action="email">Email Document</a></li>
</ul>