这是我的代码,无论如何以某种方式循环if,else if和else语句以某种方式动态填充它们(没有那么多语句,或者这被认为是好习惯)?
$('input').each( function () {
var self = $(this)
if ( self.attr( 'type' ) === 'email' && supportsInputType ( 'email' ) ) {
self.data( 'fallback', 'email' )
} else if ( self.attr( 'type' ) === 'url' && supportsInputType ( 'url' ) ) {
self.data( 'fallback', 'url' )
} else if ( self.attr( 'pattern' ) && supportsAttr ( 'pattern' ) ) {
self.data( 'fallback', 'pattern' )
}
})
我已经省略了我的其他功能,专注于if / else等。感谢任何建议。
答案 0 :(得分:4)
如果你让supportsInputType
正确处理任何类型,你可以这样做:
$('input[type]').each(function() {
var $this = $(this);
if (this.type !== $this.attr('type')) {
$this.data('fallback', type);
}
});
答案 1 :(得分:0)
我会尝试制作一个选择器,直接抓取属性的输入并摆脱supportInputType
。像这样(未经测试):
var attrs = ['type=email','type=url','pattern'];
$.each(attrs, function(i,attr) {
$('input['+ attr +']').data('fallback', attr.replace(/.+=/,''));
});
这可能适用于您当前的代码。