제이쿼리 팁! 기존 요소 유지하면서 텍스트만 바꾸기.

제목만 보면 못알아들을 거 압니다. 제목학원 안다닌 덕분이죠.

예제를 통해 기존 하위 요소하면서 텍스트만 바꾸는 방법을 알려드리죠.

어쨌든 이렇게 마크업이 구성되어 있습니다.

<a id=”mylink” href=”#”>

    <img src=”http://fiddle.jshell.net/favicon.png”/>링크1

</a>

보시면 이미지 태그와 그냥 텍스트가 공존해 있습니다.

이 상태에서 $(‘#mylink’).text(‘링크다’); 이렇게 실행하시면

이미지 태그가 없어지고 링크다 라는 텍스트가 들어가게 됩니다.

만약 저 이미지 태그를 유지하면서 텍스트만 바꾸고 싶다면,

깊숙히 들어가서 바꿀 수 있습니다. 조금 어려운 방법이죠.

먼저 $(‘#mylink’).contents() 메서드를 사용합니다.

contents() 메서드는 children() 메서드와 비슷하지만,

텍스트 요소까지 모두 받아들이는 차이점을 가지고 있습니다.

이렇게 한 다음에 텍스트 요소만 필터링합니다. 이때부터 표준 속성인 nodeType를 이용하죠.

$(‘#mylink’).contents().filter(function(){

    return this.nodeType == 3;

});

이렇게 하면 nodeType 가 3, 즉, 텍스트 요소만 필터링하게 되는 겁니다.

그런 다음에 지웁니다.

$(‘#mylink’).contents().filter(function(){

    return this.nodeType == 3;

}).remove();

모든 텍스트 요소가 삭제됩니다.

이제 할 일이 끝났으니 되돌아 가면 되겠습니다. end() 메서드를 통하여 다시 이전 선택자로 돌아갑니다.

$(‘#mylink’).contents().filter(function(){

    return this.nodeType == 3;

}).remove().end().end();

end() 한번 쓰면 contents() 로 뽑은 요소들이 선택되고, 또 end() 쓰면 $(‘#mylink’) 선택자에 대한 작업을 준비하게 되겠습니다.

이런 다음에 텍스트를 포함시키면 끝.

$(‘#mylink’).contents().filter(function(){

    return this.nodeType == 3;

}).remove().end().end().append(‘링크다’);

어때요. 참 쉽죠?

만약 이미지 태그 앞에다 넣고 싶다면?

$(‘#mylink’).contents().filter(function(){

    return this.nodeType == 3;

}).remove().end().end().prepend(‘링크다’);

이렇게 하시면 되겠습니다.

빠르게 온라인 예제를 바고 싶다면 주저마시고 링크 #1 을 클릭하세요.

그럼 이만!

보너스! 제이쿼리 없이 하고싶다면 아래 스크립트를 참고하시길.

var link=document.getElementById(‘mylink’);

for(var i = 0,childs = link.childNodes; i < childs.length; i++){

    if(childs[i].nodeType == 3)

      link.removeChild(childs[i]);

}

link.appendChild(document.createTextNode(‘링크다’));

의외로 쉽네..

composite / 2012년 11월 13일 / 미분류 / 0 Comments

jQuery Paging Plugin

업데이트: 제이쿼리 페이징 플러그인 0.2.0 업데이트! 아래 설명 쌩까고 Github 으로 신속히 이동하라!

실무에 많이 쓰지만 은근히 빡센 페이징. 동적 페이징에 머리 짜매고 계신가? 여기 종결자가 있다.

jQuery Paging Plugin!

가볍다. 2KB밖에 안되며 gzip 압축 시 1KB도 안될 것이다.

빠르다. 페이징 외 쓰잘데기 없는 효과나 부가기능 따위는 없다.

쉽다. 한줄이면 페이징 초기화가 끝난다. 서버에서 불러와야 할 거는 현재 페이지와 총 페이지 수, 그뿐이다.

동적이던 정적이던 다 된다. 전통 방식 게시판이던 ajax 로 만든 게시판이던 입맛에 맞게 쓸 수 있다.

오픈소스다. 당신이 죽쓰던 밥쓰던 상관않는 MIT 라이센스다. 물론 더 좋은 방법 있으면 공유하는 것은 미덕!

사용법?

$(‘#paging’).paging({current:5,max:50}); //총 50 페이지 중 5 페이지로 시작하는 페이징을 불러올 것이다.

이거덕분에 프로젝트 잘되서 제작자한테 커피 한잔 쏘고 싶으면 ukjinplant at hotmail dot com 으로 연락해도 된다.

그럼 다운로드는?

소스(개발용) 다운로드 | 최적화(실무용) 다운로드 | 프로젝트 홈페이지

페이징 방식이 여러가진데 이 페이징 플러그인의 롤모델이 뭐인지 궁금하면 여기여기 를 클릭하여 확인해보라.

jQuery.Paging

jQuery를 위한 간단한 페이징.

사용법 : $('#paging').paging({max:50});

속성 :
item : 페이징 요소 태그명, 기본값 "a".
itemClass : 페이징 요소 중 페이지 수 CSS 클래스, 기본값 "paging-item".
itemCurrent : 현재 페이지를 나타내는 CSS 클래스이며 페이징 요소와 중첩됨, 기본값 "selected".
format : 페이지를 나타낼 내용, 기본값 "[%d]".
sideClass : 다음 또는 이전 버튼 CSS 클래스, 기본값 "paging-side".
next : 다음 버튼 내용. 기본값 "[{5}&gt;]" ("[>]")
prev : 이전 버튼 내용. 기본값 "[{4}&lt;]" ("[<]")
first : 첫 페이지 내용. 기본값 "[1&lt;&lt;]"
last : 마지막 페이지 내용. 기본값 "[&gt;&gt;{6}]"
length : 페이지 표시할 개수. 기본값 10.
max : 최대 표현할 페이지 수. 기본값 1.
current : 현재 페이지 정의. 기본값 1.
href : a 태그일 때 링크 주소를 정의. 기본값 "#%d"
append : true 설정 시, 기존 내용을 삭제하지 않고 페이징을 포함시킴. 기본값 false.
event : 기본 이벤트 활성화. 새로고침 없이 동적으로 페이징 초기화됨. ajax에 유용. 기본값 true.
>event=true 일 때 가능한 이벤트 정의.
onclick : 페이징 버튼 클릭 시 호출. false 반환 시 동적으로 페이지가 바뀌지 않음. 동적 페이징을 원하지만
                  href로 인한 링크 이동을 원하지 않을 경우 이벤트 메서드인 event.stopPropagation() 호출.
onprev : 이전 버튼 초기화 시 이벤트. 'this' 는 이전 버튼 요소를 가리킴.(plain DOM. not jQuery!)
onnext : 다음 버튼 초기화 시 이벤트. 'this' 는 다음 버튼 요소를 가리킴.(plain DOM. not jQuery!)
onitem : 각 페이지 버튼 초기화 시 이벤트. 'this' 는 각 페이지 버튼 요소를 가리킴.

치환자 (format,next,prev,href,first,last 속성 전용)
{0} = 클릭 시 페이지
{1} = 페이지 길이
{2} = 처음 페이지
{3} = 마지막 페이지
{4} = 이전 파트의 마지막 페이지
{5} = 다음 파트의 처음 페이지
{6} = 맨 마지막 페이지

판올림 내역
0.1.0 : 초기 버전
0.1.5 :
처음 페이지 및 마지막 페이지 추가. 내용에 치환자 적용 가능.
'append' 옵션 추가 : true 설정 시 기존 내용이 삭제되지 않고 포함됨.
{6} 치환자는 마지막 페이지(max 값과 동일) 를 가리킴
0.1.6 : first 또는 last 내용에 false 설정시 만들지 않도록 기능 추가.

composite / 2012년 10월 11일 / Piss Development / 10 Comments