Интересной особенностью модуля 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)
Используйте stopImmediatePropagation
функция объекта-события jQuery.
Сохраняет остальную часть обработчиков от того, чтобы быть выполняемым. Этот метод также останавливает пузырение путем вызова event.stopPropagation ().
$(document).click(function(event) {
alert('a');
event.stopImmediatePropagation();
return false;
});
$(document).click(function() {
alert('b');
});
Первая вещь, которую я спрашиваю: почему Вы имеете два функции связанный с тем же событием щелчка? Наличие доступа к коду, почему Вы только не выполняете тот единственный вызов?
$(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);
}
});
});
Использование развязывает справку?
$(document).click(function() {
alert('a');
$(this).unbind('click');
return false;
});
Если, какой сказанный 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;
});
Не самое симпатичное решение, но это будет работать.