Определение типа HTML5 и инициализация плагина

ЧАСТЬ A:

Я знаю, что есть много вещей, которые говорят вам, поддерживает ли браузер определенный атрибут HTML5, например http://diveintohtml5.info/detect.html , но они не говорят вам, как получить тип из отдельных элементов и использовать эту информацию для запуска ваших плагинов.

Итак, я попробовал:

alert($("input:date"));
//returns "[object Object]" 

alert($("input[type='date']")); 
//returns "[object Object]"

alert($("input").attr("type"));
//returns "text" ... which is a lie. it should have been "date"

Ни один из них не работал.

В конце концов я пришел к следующему (это действительно работает):

var inputAttr = $('
').append($(this).clone()).remove().html().toLowerCase(); alert(inputAttr); // returns ""

Спасибо: http://jquery-howto.blogspot.com/2009 /02/how-to-get-full-html-string-including.html

Итак, мой первый вопрос: 1. Почему я не могу прочитать атрибут "type" в браузерах, не поддерживающих html5? Вы можете придумать любой другой атрибут и фиктивное значение и прочитать его. 2. Почему мое решение работает? Почему имеет значение, находится он в DOM или нет?

ЧАСТЬ B:

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

  

Живой пример: http: // joelcrawfordsmith. com / sandbox / html5-type-detect.html

И просьба / вопрос: Может ли кто-нибудь помочь мне избавиться от лишнего жира в моем исправлении типа ввода HTML5?

У меня отключена функциональность (добавлены резервные варианты для IE6-IE8 и FF без добавления классов в инициализацию)

Есть ли более эффективные методы для итерации по DOM для таинственных типов ввода? И следует ли мне использовать If Else, функцию или регистр в моем примере?

Спасибо всем,

Джоэл

14
задан John 13 January 2018 в 22:52
поделиться