Чем можно заменить a href?
Правильнее будет сделать кнопкой, то есть тегом </button>. При использовании данного тега есть свои плюсы и одним из них является поддержка фокуса по дефолту, т.е если юзать например </div>, то тогда придётся делать дополнительные телодвижения чтобы кнопка слепленная из тега  </div> - корректно принимала на себя фокус, например, с клавиатуры. Да и к тому же более семантично использовать </button> для подобных целей. Хотя можно использовать и тег <input>, но в данной ситуации, он совершенно не к месту.
Ничем, если ваc это раздражает, просто заблокируйте контекстное меню на таких ссылках. Пример:
<a oncontextmenu="event.preventDefault();" href="#">Тест</a>
Попробуйте нажать такую ссылку правой кнопкой мыши... ничего не будет происходить.

Немного доработав пример, можно сделать так, чтобы правый клик был равноценен клику левому:
<a oncontextmenu="event.preventDefault(); this.click();" href="#">Тест</a>
А значит будет открываться модалка даже при клике правой кнопкой мыши.