0

这是我的代码,是否有某种方式循环通过 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 等。感谢您的任何建议。

4

2 回答 2

4

If you make supportsInputType properly handle any type, you could just do something like this:

$('input[type]').each(function() {
    var $this = $(this);

    if (this.type !== $this.attr('type')) {
        $this.data('fallback', type);
    }
});
于 2013-06-11T20:45:22.930 回答
0

我会尝试制作一个选择器,它可以立即按属性获取输入并摆脱supportInputType. 像这样的东西(未经测试):

var attrs = ['type=email','type=url','pattern'];

$.each(attrs, function(i,attr) {
  $('input['+ attr +']').data('fallback', attr.replace(/.+=/,''));
});

这可能适用于您当前的代码。

于 2013-06-11T20:52:39.050 回答