Я также пытаюсь заставить Autocompleter проигнорировать размывание, если определенный нажатый элемент и имеет рабочее решение, но только для Firefox из-за explicitOriginalTarget
Autocompleter.Base.prototype.onBlur = Autocompleter.Base.prototype.onBlur.wrap(
function(origfunc, ev) {
if ($(this.options.ignoreBlurEventElement)) {
var newTargetElement = (ev.explicitOriginalTarget.nodeType == 3 ? ev.explicitOriginalTarget.parentNode : ev.explicitOriginalTarget);
if (!newTargetElement.descendantOf($(this.options.ignoreBlurEventElement))) {
return origfunc(ev);
}
}
}
);
Это значение по умолчанию оберток кода onBlur метод Autocompleter и проверки, если ignoreBlurEventElement параметры установлен. если это установлено, это проверяет каждый раз, чтобы видеть, является ли нажатый элемент ignoreBlurEventElement или нет. Если это, Autocompleter не делает cal onBlur, еще это называет onBlur. Единственная проблема с этим состоит в том, что это только работает в Firefox, потому что explicitOriginalTarget свойством является конкретный Mozilla. Теперь я пытаюсь найти различный путь, чем использование explicitOriginalTarget. Решение, которое Вы упомянули, требует, чтобы Вы добавили onclick поведение вручную к элементу. Если мне не может удаться решить проблему explicitOriginalTarget, я предполагаю, что буду следовать за Вашим решением.
Причина использования обратных итераторов заключается в том, что стандартные алгоритмы не знают, как перебирать коллекцию в обратном порядке. Например:
#include <string>
#include <algorithm>
std::wstring foo(L"This is a test, with two letter a's involved.");
std::find(foo.begin(), foo.end(), L'a'); // Returns an iterator pointing
// to the first a character.
std::find(foo.rbegin(), foo.rend(), L'a').base()-1; //Returns an iterator
// pointing to the last A.
std::find(foo.end(), foo.begin(), L'a'); //WRONG!! (Buffer overrun)
Используйте любой итератор, чтобы получить более четкий код.
Для чего это стоит, Эффективный STL Скотта Мейерса рекомендует просто использовать обычный старый итератор
(элемент 26).