jQuery Несколько Обработчиков событий - Как Отменить?

Интересной особенностью модуля regex является именованный список. При этом вам не нужно включать несколько альтернатив, разделенных | в группе без захвата. Вам нужно только определить список раньше и ссылаться на него в шаблоне по его имени. Пример:

import regex

words = [ ['a', 'the', 'one'], ['reason', 'reasons'], ['for', 'of'] ]

pattern = r'\m \L \s+ \L \s+ \L \M'
p = regex.compile(pattern, regex.X, word1=words[0], word2=words[1], word3=words[2])

s = 'the reasons for'

print(p.search(s))

Даже если эта функция не является существенной, она улучшает читаемость.

Вы можете добиться чего-то подобного с re-модулем, если вы присоединитесь к элементам с | до:

import re

words = [ ['a', 'the', 'one'], ['reason', 'reasons'], ['for', 'of'] ]

words = ['|'.join(x) for x in words]

pattern = r'\b ({}) \s+ ({}) \s+ ({}) \b'.format(*words)

p = re.compile(pattern, re.X)

44
задан Josh Stodola 17 March 2009 в 09:23
поделиться

4 ответа

Используйте stopImmediatePropagation функция объекта-события jQuery.

Сохраняет остальную часть обработчиков от того, чтобы быть выполняемым. Этот метод также останавливает пузырение путем вызова event.stopPropagation ().

$(document).click(function(event) { 
  alert('a');
  event.stopImmediatePropagation();
  return false;
});

$(document).click(function() {
  alert('b');
});
85
ответ дан Ken Browning 23 September 2019 в 11:29
поделиться

Первая вещь, которую я спрашиваю: почему Вы имеете два функции связанный с тем же событием щелчка? Наличие доступа к коду, почему Вы только не выполняете тот единственный вызов?

$(function (){
    var callbackOne = function(e){
        alert("I'm the first callback... Warning, I might return false!");
        return false;
    };

    var callbackTwo = function(e){
        alert("I'm the second callback");
    };

    $(document).click(function (e){
        if(callbackOne(e)){
            callbackTwo(e);
        }
    });
});
2
ответ дан Seb 23 September 2019 в 11:29
поделиться

Использование развязывает справку?

$(document).click(function() { 
  alert('a');
  $(this).unbind('click');
  return false;
});
1
ответ дан nickf 23 September 2019 в 11:29
поделиться

Если, какой сказанный nickf не работает, Вы могли использовать маленький конечный автомат:

var trigger = 0;

$(document).click(function() { 

  alert('a');
  if(you_want_to_return_false) {
    trigger = 1;
    return false;
  }
});

$(document).click(function() {
  if(trigger !== 0) {
  alert('b');
  } 
  trigger = 0;
});

Не самое симпатичное решение, но это будет работать.

0
ответ дан GEOCHET 23 September 2019 в 11:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: