ЧАСТЬ 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
поделиться