Нажмите событие, связанное с несколькими местами, как расставить приоритеты и запустить конкретное событие

0

Все события привязаны как часть нашего бутстрапа. Например, тег привязки с классом "bootstrapclick" привязан к событию click. Теперь я хотел написать дополнительную проверку onclick элемента anchor, поэтому я написал функцию onclick event. Но это срабатывает после события загрузки бутстрапа.

форма

<a href='#' id='mylink' class='bootstrapclick'> Click here </a>

JQuery

var link = $('#mylink')[0]; //=> document.getElementById('mylink');
link.onclick = function(e) {
     //do additional validation
     //and prevent bootstrap click event
};

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

  • 0
    Если вы хотите полностью остановить событие щелчка начальной загрузки, вы можете использовать .off() .
  • 0
    изменить на $ ('# mylink'). Вы пропустили #
Показать ещё 5 комментариев
Теги:

3 ответа

0

Capture event вместо использования addEventListener: {, поэтому событие будет запущено перед любым распространяющимся событием}

Если true, useCapture указывает, что пользователь хочет начать захват. После начала захвата все события указанного типа будут отправлены зарегистрированному прослушивателю перед отправкой на любые EventTargets под ним в дереве DOM. События, которые пузырятся вверх через дерево, не будут вызывать слушателя, назначенного для использования захвата.

var link = $('#mylink')[0]; //=> document.getElementById('mylink');
link.addEventListener("click", function(e){
     //do additional validation
     //and prevent bootstrap click event
     if(notValid) // or whatever you use to validate
         e.stopImmediatePropagation(); // this will prevent bootstrap click handler to be fired
}, true);

Теперь я не уверен, как bootstrap связывает свои собственные события.

0

Попробуй это

EDIT: это загорится на готовом документе - он удалит все события, связанные с этим элементом управления, и добавит обработчик события onclick с вашей логикой. Если после подготовки документа добавлен обработчик события начальной загрузки, вам нужно найти, когда и удалить его после его добавления x.off(); должен сделать это.

$(function(){ 
var x = $('#mylink'); 
x.off();
x.on('click', function(){

//...
});
});
  • 0
    Проблема в том, что это событие запускается позже для события начальной загрузки. так что $ (this) .off () слишком поздно?
  • 0
    @ user3432047 пожалуйста, проверьте мои изменения
0

Использовать .off() в jquery

$('#mylink').on("click" , function(event) {
       $(this).off("click");
       event.preventDefault()
       // do stuff here
 }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню