2013-01-23 3 views
0

나는이 스크립트 내 사이트에 합자를 추가 ligature.js 사용하고 있습니다 : http://code.google.com/p/ligature-js/특정 요소에 ligature.js 적용

의 I는 데 문제가 내가 그것을 얻을 수 있기 때문에 경우 특정 클래스 이름에 적용 할입니다 일부 시스템 글꼴에 적용됩니다.로드하는 웹 글꼴 이외의 다른 문자는 Windows에 표시되지 않습니다.

워드 프로세서를 사용하여 특정 요소를 구현하는 말 :

ligature(false, document.getElementById('myMemoirs')); 

가 어떻게이 다른 클래스에 적용하는 데 사용할 수있는, .site 제목, 또는 사용 JQuery와 같이이 작업을 수행하려면? 미리 감사드립니다.

답변

1

합자 소스 코드를 보면 두 번째 인수로 하나의 요소 만 전달할 수 있지만 전달 된 요소를 모두 통과하여 합자를 적용 할 수 있음을 알 수 있습니다. 한 번에 하나의 요소로 함수를 호출하는 루프에서 여러 요소에 합자를 적용하여 합자를 적용 할 수 있습니다.

var siteTitle = document.getElementsByClassName('site-title'); 
var elemLength = siteTitle.length; 
while(elemLength--) { 
    ligature(false, siteTitle[elemLength]); 
} 

또는 jQuery를

$.each($('.site-title'), function(index, element) { 
    ligature(false, element); 
}); 

그러나 아마 이렇게하는 가장 좋은 방법으로

은 여러 요소를 처리하는 기능을 리팩토링가 될 것입니다.

+0

jQuery 솔루션은 내가 찾고있는 솔루션이었습니다. 감사! – Vincent

1

우리는이 jQuery 솔루션을 Drupal 기본 테마 (위대한 BTW 작동)에서 사용하고 있으며 아래와 같이 여러 선택기를 대상으로 설정했습니다. 일부 하위 테마에서 재정의 스크립트를 사용하여 특정 셀렉터에서 합자 대체를 끄는 쉬운 방법이 있습니까? 하위 테마는 기본 테마 스크립트를 상속하지만 이전에 정의 된 모든 요소에서 합자 대체를 항상 원하는 것은 아닙니다.

$.each($('h1, h2.site-name, .node-page h2, .node-page h3, .node-page h4'), function(index, element) { 
    ligature(false, element); 
}); 
관련 문제