2013-07-01 1 views
1

원하는 이미지를로드 할 수없는 경우 자리 표시 자 이미지로 대체 할 수있는 간단한 방법을 썼습니다. 그것은 사용자가 이미지의 크기를 정의하는 2 자리을 사용할 수 있습니다 :하다고문자열을 동일한 명명 된 변수로 바꿉니다.

thing I wrote : 가능한 경우

;(window.jQuery || window.Zepto).fn.fallback = function (url) { 
    return this.one('error', function() { 
     this.src = (url|| 'http://lorempixel.com/$w/$h') 
     .replace('$w', this.width).replace('$h', this.height); 
    }); 
}; 

내가 짧은와 .replace('$w', this.width).replace('$h', this.height);을 대체 할, 지금 내게 부탁 해요하지만 regex을 사용하여 모든 객체에서 할당 된 값으로 $* (dollar + first-char)을 모두 바꿉니 까? 이 같은

뭔가 우리가 예를 들어, image-object에서 모든 properties를 사용할 수 있도록

'$f is not equal to $b'.replace(/magicregex/, { 
    foo: 'foo', 
    bar: 'bar' 
}); 

image.width, image.src, image.width ...

답변

1

기능을 대체품으로 사용하는 경우에만. 마찬가지로 :

"$w/$h".replace(/\$[wh]/g, function(m){ return m == "$w" ? width : height; }); 

또한이 같은 비교와 함께 멀리 할 수있는 :

"$w/$h".replace(/\$(?:(w)|h)/g, function(m, w){ return w ? width : height; }); 

당신이 사용할 수있는 해시 값을 조회하려면 다음

"$w/$h".replace(/\$(\w+)/g, function(m, name){ return hash[name]; }); 
+0

MHH를, 이것은 동적이지 않게 만든다. '$ w'와'$ h';에 대한 대체물을 제한합니다.) 내 질문을 업데이트했습니다 ... – yckart

+0

@yckart, 함수는 분명히 원하는 모든 것을 할 수 있습니다. 예제를 추가하겠습니다. – Qtax

+0

네, 마지막 편집이 좋아 보인다! 고마워요 :) – yckart

관련 문제