Почему обтекание вызывает размытие моего ввода?

0

Я использую jQuery 2.0.3 со следующими фрагментами:

function fixTextbox(element) {
    var span = "<span class='k-widget k-autocomplete k-header k-state-default'></span>";
    var wrap = $(element).wrap(span);
}

с этими обработчиками событий:

$(document).on("focus", ".k-textbox", function () {
    console.debug("focus");
    fixTextbox(this);
    $(this).parent().addClass("k-state-focused");
});

$(document).on("blur", ".k-textbox", function () {
    console.debug("blur");
    $(this).parent().removeClass("k-state-focused");
});

и этот HTML:

<input type="text" class="k-textbox" />

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

Есть ли другой способ, которым я должен инкапсулировать ввод в промежутке, который не потерял бы события? Или я должен вручную перезаписывать события после обертки?

  • 0
    предоставьте jsfiddle, который повторяет вашу проблему. Обработчики не должны быть удалены, и в любом случае вы делегируете событие здесь
  • 1
    Как можно потерять размытие?
Показать ещё 17 комментариев
Теги:
binding
wrap

1 ответ

1
Лучший ответ

Я думаю, проблема заключается в том, что когда вы переносите элемент ввода другим элементом, он заставляет какой-то перехват браузера дерева рендеринга, из-за чего входной элемент теряет фокус.

Демо: Fiddle - см. В Chrome - в консоли вы можете видеть, как фокус и размытие записываются

Возможное решение состоит в том, чтобы обернуть область вокруг перед событием фокуса - на готовом документе или если элементы создаются динамически, то во время самого создания элемента.

jQuery(function ($) {
    $('.k-textbox').wrap('<span class="k-widget k-autocomplete k-header k-state-default"></span>')
})

Демо: скрипка

  • 0
    Функция обтекания Jquery использует клон! жаль

Ещё вопросы

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