Почему при подделке щелчка по ссылке с помощью document.getElementById ("tabkategorierna"). Click (); все ссылки перестают работать? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть ссылка (link1) на моей верхней панели навигации, которая открывает скользящее меню со ссылками на другую страницу (на рабочем столе). Он устанавливает флаг, а затем проверяет, открывается он или нет, когда вы щелкаете ссылку. (Это работает так, как должно открывать и закрывать меню)

var flagga=true;
$$(document).on("click",".openstoramenyn", function(){

    if(flagga){
       $$(document).find('.storamenyn').animate({"top":"59px"}, { duration:300, easing: 'linear'});
       flagga = false;
    }else{
       $$(document).find('.storamenyn').animate({"top":"-"+hojden+"px"}, { duration:300, easing: 'linear'});
       flagga = true;
    }

});

Затем в этом меню у меня есть ссылка (link2 with id=tabkategorierna), который открывает всплывающее меню.

Теперь, если я нажимаю на link2, чтобы открыть всплывающее меню, он работает каждый раз, чтобы открыть всплывающее меню, а link1 всегда работает.

Но если я вместо этого открою всплывающее окно с ключевым событием "s" (для поиска), то после закрытия всплывающего меню link1 больше не будет работать - оно не откроет верхнее меню!?

Когда я нажимаю клавишу "s" на клавиатуре, я запускаю событие click на id=tabkategorierna, чтобы вызвать имитацию щелчка по ссылке с помощью id=tabkategorierna.

Итак, это код для открытия всплывающего окна с помощью клавиши "s" и имитации щелчка по ссылке id=tabkategorierna.

var mykeysearchFunc;
mykeysearchFunc = function(event) {
  //o=79 s=83 f=70
  if ((event.keyCode === 79) || (event.keyCode === 83) || (event.keyCode === 70)){
    // Trigger the button element with a click
    document.getElementById("tabkategorierna").click();
    console.log(flagga)
    event.preventDefault();
  }
  if ((event.keyCode === 67) || (event.keyCode === 27)){
    app.popup.close(); 
    event.preventDefault();
  }
}

document.addEventListener("keydown", mykeysearchFunc)

Итак, почему это работает, если я действительно нажимаю на ссылку, чтобы открыть всплывающее меню, а не когда он открывается запуском document.getElementById("tabkategorierna").click(); В чем разница между фактическим нажатием на ссылку и запуском поддельный щелчок по нему?

Почему link1 перестает работать после того, как я запустил document.getElementById("tabkategorierna").click();?

Любая помощь очень ценится, спасибо.

Если вы нажмете наверху " MENY », а затем« TEST KATEGORIER »вы получите всплывающее меню. если вы просто нажмете Enter, он закроется и загрузит страницу. Вот как это должно работать. Теперь, если вы вместо этого откроете всплывающее меню с помощью клавиши «s», оно откроет всплывающее меню, а затем вы нажмете Enter, и он снова загрузит страницу поиска, как и должно. Но теперь возникает проблема: если вы нажмете первую ссылку, на которую вы нажали «MENY», она больше не будет работать. Это моя проблема. https://xn--tervinnmera-w8a.se

1 Ответ

0 голосов
/ 08 мая 2020

Вам нужно остановить анимацию, когда она завершит свое действие. Это отвлекает другие элементы страницы от работы на вашей странице.

Попробуйте этот код:

$$(document).find('.storamenyn').stop();

Вы можете обратиться к этому https://api.jquery.com/stop/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...