Разметка для вашей ссылки имеет встроенный обработчик щелчков и не href
:
<A class='btnGrid' id=source<#= ID #> onclick=GridSelection.verify('<#= ID #>') >Add</A>
Если это GridSelection.verify()
, который вы пытаетесь предотвратить, вы должны заметить, что:
- Встроенный обработчик щелчков, вероятно, вызывается до вашего другого обработчика событий, что означает, что уже слишком поздно отменять его из другого обработчика, и в любом случае
e.preventDefault()
не останавливает запуск других обработчиков, он останавливает действие по умолчанию для события, которое для ссылки заключается в переходе по URL, указанному в атрибуте href
.И вы не указываете href
.
Если вы хотите иметь несколько обработчиков для одного и того же события на одном и том же элементе, вы должны назначить их все с помощью jQuery в нужном вам порядке.их нужно назвать , а затем использовать метод event.stopImmediatePropagation()
в одном из обработчиков, если вы хотите остановить запуск остальных из них.
Я не знаюкак вписать это в код, который вы показали, учитывая, что вы не показываете часть кода, которую хотите предотвратить, но общий принцип таков:
<a id="myLink" href="someURL">My link</a>
<script>
$("#myLink").click(function(e) {
// some processing
if (someCondition)
e.stopImmediatePropagation();
// some other processing
});
$("#myLink").click(function(e) {
// some processing
});
</script>
Сказав все это, если *Функция 1029 * вызывает вашу функцию .addItem()
, и вы намерены не допустить, чтобы события future click работали по той же ссылке, потому что первый щелчок должен подтвердить / добавить, и тогда вы не захотитедобавьте еще раз, затем в вашей функции .addItem()
сделайте что-то вроде этого:
anchorOption.removeAttr("onclick");
// or
anchorOption[0].onclick = null;