2013-06-11 3 views
0

여기 내 코드가 있습니다. 어떻게 든 어쨌든 if, else if 및 else 문을 반복하여 어떻게 든 동적으로 채 웁니다 (너무 많은 명령문없이 또는이 것이 우수 사례로 간주됩니까?)?여러 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 등에 집중하지 않았습니다. 다른 조언을 주셔서 감사합니다. 당신이 supportsInputType 제대로 모든 유형을 처리 한 경우

+0

나는 당신이하려는 것을 이해하고 있는지 잘 모르겠습니다. 당신이 객관적인 것을 설명하기 위해 의사 코드를 추가 할 수 있습니까? –

+0

헤이 데이비드, 그게 내가 누군가의 경험을 통해 얻으려는 것입니다! :) 어떻게 든 단축/압축 if, else if, else 문장의 더 나은 방법이 있습니다. 그래서 기본적으로 완전히 쓰여지지 않습니다. – Halcyon991

+0

왜'supportsInputType' 함수가 필요합니까? – Blender

답변

4

, 당신은 단지 이런 식으로 뭔가를 할 수 :

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

    if (this.type !== $this.attr('type')) { 
     $this.data('fallback', type); 
    } 
}); 
+0

감사합니다 블렌더, 비록 그것이 입력 형식을 가지고 잘 지원뿐만 아니라 두 번째 매개 변수와 일치해야합니다. 그것은 성취 할 수 있습니까? – Halcyon991

+1

@ Halcyon21 : 왜? 'supportsInputType'은 어떻게 정의되어 있습니까? – Blender

+0

다음은 전체 코드와 기능입니다. 생략 된 HTML : http://jsfiddle.net/WXFW3/ – Halcyon991

0

내가 바로 속성으로 입력을 잡고 선택기 공예 및 supportInputType 없애려고합니다. 다음과 같은 것 (테스트되지 않음) :

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

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

아마도 현재 코드에서 작동해야합니다.

+0

이것은 내가 생각할 수있는 것과 비슷합니다. 하지만 확실히 거기에 && 연산자뿐만 아니라 supportsInputType 함수가 필요합니다. – Halcyon991

관련 문제