iconv

 

 

※ 요약

리눅스 명령어 iconv는 주어진 파일의 인코딩 방식을 변경할때 사용하는 명령어다. 

 

※ 경로

/usr/bin/iconv

 

※ 사용법

iconv -f [변경전 인코딩] -t [변경할인코딩]
ex) iconv -c -f euc-kr -t utf-8 test.txt > test-utf8.txt

 

※ 옵션

 옵션

 설명

 --from-code, -f encoding

 원본 파일의 변경 전 문자 인코딩을 지정

 --to-code, -t encoding

 변경하려는 대상의 문자 인코딩을 지정

 --list, -l

 지원하는 인코딩 목록들을 출력

 --output, -o file

 출력 내용을 표준출력 대신 지정한 파일에 저장

 --silent, -s

 경고 메시지를 출력하지 않음

 --verbose

 상태의 자세한 정보를 출력

'프로그래밍 > linux' 카테고리의 다른 글

리눅스 메모리 사용량순 프로세스 보기  (0) 2019.04.09
리눅스 패스워드 털렸는지 확인하기  (0) 2018.04.05
CentOS 방화벽 사용방법  (0) 2018.03.26
IPTABLE  (0) 2018.03.26
스태틱 라우팅 설정  (0) 2018.03.13

php에서 Notice: No file uploaded in Unknown on line 0 에러 등등

파일첨부를 하지 않았을 때 처리 하는 방법

 

submit 하기전에 

 

        $('.btn_file').each(function (index, value){
            if($(this).val() == ''){
                $(this).attr("disabled",true);
            }
        });

선택된 파일이없으면 disabled 처리해준다

1 간단히 보기(ps -ef)

명령어
ps -ef --sort -rss
실행예시
[root@zetawiki ~]# ps -ef --sort -rss
UID        PID  PPID  C STIME TTY          TIME CMD
mysql     1154  1064 99 May03 ?        213287-12:54:30 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --l
apache   26245  1202  0 03:48 ?        00:00:05 /usr/sbin/httpd
apache   26247  1202  0 03:48 ?        00:00:07 /usr/sbin/httpd
... (생략)
root       741     2  0 May03 ?        00:00:00 [kmpath_handlerd]
root       768     2  0 May03 ?        00:00:00 [kjournald]

→ /usr/libexec/mysqld 프로세스가 물리 메모리를 가장 많이 점유하고 있다.

1.1 상위 10개

명령어
ps -ef --sort -rss | head -n 11

2 메모리 사용량 표시 (ps -eo)

명령어
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11
실행예시
[root@zetawiki ~]# ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11
USER       PID  PPID   RSS    SZ    VSZ %MEM %CPU     TIME CMD
mysql     1154  1064 26116 582252 642724  4.8 6623646 213287-12:54:31 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
apache   26245  1202 24284 18320 347196  4.5  0.0 00:00:05 /usr/sbin/httpd
apache   26247  1202 23780 17824 346700  4.4  0.0 00:00:07 /usr/sbin/httpd
apache   26248  1202 23632 17048 345924  4.4  0.0 00:00:05 /usr/sbin/httpd
apache   26242  1202 23112 18080 342768  4.3  0.0 00:00:06 /usr/sbin/httpd
apache   26249  1202 23100 18076 342764  4.3  0.0 00:00:06 /usr/sbin/httpd
apache   26692  1202 23084 18084 342772  4.3  0.0 00:00:03 /usr/sbin/httpd
apache   26244  1202 22844 17828 342516  4.2  0.0 00:00:06 /usr/sbin/httpd
apache   26243  1202 22832 17828 342516  4.2  0.0 00:00:08 /usr/sbin/httpd
apache   26693  1202 22832 17820 342508  4.2  0.0 00:00:04 /usr/sbin/httpd

→ /usr/libexec/mysqld 프로세스가 물리 메모리를 가장 많이 점유하고 있으며 그 용량은 26116KB이다.

2.1 명령인수 숨기기

프로세스 수행명령어에서 인수부분을 표시하지 않으려면 cmd를 comm으로 변경하면 된다.

명령어
ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss | head -n 11
실행예시
[root@zetawiki ~]# ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss | head -n 11
USER       PID  PPID   RSS    SZ    VSZ %MEM %CPU     TIME COMMAND
mysql     1154  1064 26116 582252 642724  4.8 6624384 213287-12:54:31 mysqld
apache   26245  1202 24284 18320 347196  4.5  0.0 00:00:05 httpd
apache   26247  1202 23780 17824 346700  4.4  0.0 00:00:07 httpd
apache   26248  1202 23632 17048 345924  4.4  0.0 00:00:05 httpd
apache   26242  1202 23112 18080 342768  4.3  0.0 00:00:06 httpd
apache   26249  1202 23100 18076 342764  4.3  0.0 00:00:06 httpd
apache   26692  1202 23084 18084 342772  4.3  0.0 00:00:03 httpd
apache   26244  1202 22844 17828 342516  4.2  0.0 00:00:06 httpd
apache   26243  1202 22832 17828 342516  4.2  0.0 00:00:08 httpd
apache   26693  1202 22832 17820 342508  4.2  0.0 00:00:04 httpd
 

 

출처 : https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%82%AC%EC%9A%A9%EB%9F%89%EC%88%9C_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EB%B3%B4%EA%B8%B0

오라클을 사용할때는 어렵게 구현 했던것을 MySQL을 사용하면서 아주 쉽게 구현이 가능했다.

Row Data:
+-----------+----------+
| colHeader | value    |
+-----------+----------+
| Header1   | value 1  |
+-----------+----------+
| Header2   | value 2  |
+-----------+----------+
| Header3   | value 3  |
+-----------+----------+
Output:
+-----------+-----------+-----------+
| Header1   | header2   | Header3   |
+-----------+-----------+-----------+
| Value 1   | value 2   | Value 3   |
+-----------+-----------+-----------+
방법1 원시적인 방법이며, 조회속도 자체가 느리다.
SELECT t1.value AS `Header1`,
       t2.value AS `Header2`,
       t3.value AS `Header3`
  FROM (SELECT * FROM table1 WHERE colHeader='Header1') t1
  JOIN (SELECT * FROM table1 WHERE colHeader='Header2') t2
  JOIN (SELECT * FROM table1 WHERE colHeader='Header3') t3;
방법2 깔끔하게 해결 된다.
SELECT  
  ID,
  GROUP_CONCAT(if(colHeader = 'Header 1', value, NULL)) AS 'Header 1', 
  GROUP_CONCAT(if(colHeader = 'Header 2', value, NULL)) AS 'Header 2', 
  GROUP_CONCAT(if(colHeader = 'Header 3', value, NULL)) AS 'Header 3' 
FROM myTable
GROUP BY ID;

[출처] MySQL (or MariaDB) 에서 row 데이터를 column 으로 변경하기.|작성자 동쪽새

'프로그래밍 > mysql' 카테고리의 다른 글

[MYSQL] CASE 사용법  (0) 2019.03.21
[MYSQL] explain 처럼 자르기  (0) 2019.03.21
[MYSQL] 날짜관련  (0) 2019.03.21
[MYSQL] Replication 관리방법  (0) 2019.03.21
[MYSQL] UPDATE 병렬처리 방법  (0) 2019.03.21

MySQL에서 사용되는 CASE WHEN 구문에 대해서 알아보겠습니다. CASE WHEN 구문은 프로그래밍 switch문과 굉장히 흡사한 구조입니다.

 

 

기존 SELECT 구문으로 출력한 모습입니다. 여기서 조건을 넣어 각각 다른 값을 출력할 수 있도록 해보겠습니다.

 


CASE WHEN 을 사용한 쿼리문입니다. 맨 위부터 천천히 살펴보면 일단 SELECT 구문으로 name 필드와 iq 필드를 출력하도록 설정했습니다.

 

여기서 name은 기존 출력하던 방식 그대로 출력하고 iq부분은 CASE WHEN 구문을 이용하여 조건을 넣었습니다.

 

만약 iq가 100을 넘는다면 기존 iq부분의 데이터를 THEN구문을 이용하여 천재라는 문자열로 변경하여 출력합니다. 

 

그리고 iq가 100이라면 iq부분의 데이터를 보통이라는 문자열로 변경합니다.

 

ELSE 구문은 위의 조건식 외 모든 데이터에 모두 적용됩니다. 그래서 위 조건식 외 모든 데이터는 바부라는 문자열로 변경됩니다.

 

CASE WHEN 구문 마지막에는 END 라는 구문을 써줘야합니다. (CASE = 시작, END = 끝)

 

마지막으로 iq 필드명을 AS를 이용하여 수준으로 변경하여 출력합니다.



출처 : http://kb.globalsoft.co.kr/web/web_view.php?notice_no=200

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX({컬럼명}, 'x', 2), 'x', -1) AS sHeight FROM {테이블명} -- {1024x512} 형식의 데이터를 x로 구분하여 두번째값 추출

ex) SELECT SUBSTRING_INDEX('www.mytestpage.info','.',2);  

RESULT -> www.mytestpage


SELECT SUBSTRING_INDEX('www.mytestpage.info','.',-2);   

RESULT -> mytestpage.info

SELECT UNIX_TIMESTAMP(CURDATE()); -- 오늘 시작일

SELECT UNIX_TIMESTAMP(CURDATE()) + 86399; -- 오늘 종료일


SELECT UNIX_TIMESTAMP(DATE_SUB( CURDATE() , INTERVAL 6 DAY)); -- 6일전 날짜

SELECT UNIX_TIMESTAMP(DATE_SUB( CURDATE() , INTERVAL 1 DAY)); -- 1일전 날짜

SELECT UNIX_TIMESTAMP(CONCAT( YEAR(CURDATE()), '-', MONTH(CURDATE()), '-01' )); -- 이번달 첫날 

SELECT UNIX_TIMESTAMP(LAST_DAY(CURDATE())); -- 이번달 마지막 날짜 

SELECT CURDATE(); -- 오늘 날짜 YYYY-mm-dd

SELECT DAY(CURDATE()) - 1; -- 오늘을 제외한 이번달 날짜

SELECT YEAR(CURDATE()); -- 이번년

SELECT MONTH(CURDATE()); -- 이번달

SELECT DAYOFMONTH(CURDATE()); -- 오늘

SELECT HOUR(NOW()); -- 시간

SELECT MINUTE(NOW()); -- 분

SELECT SECOND(NOW()); -- 초


SELECT UNIX_TIMESTAMP(CURDATE())-1

SELECT DATE_FORMAT(NOW() , '%Y-%m-%d %H:%i:%s')

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());

- 마스터, 슬레이브 Replication(동기화) 상태 보는 법

show master status -- 마스터에서

show slave status -- 슬레이브에서 (쉘에서 볼땐 show slave status \G; 로 하면 보기좋게 보임)


Master_Log_File

Read_Master_Log_Pos



SLAVE DB에서 확인해서

Slave_IO_Running와 Slave_SQL_Running이 Yes이고,

Read_Master_Log_Pos와 Exec_Master_Log_Pos 값이 일치하면 정상적으로 복제중이다.


==============================================================================


보통 리플리케이션이 깨졌을땐

슬레이브서버에서 stop slave 후


방법1. 

  에러부분을 수정


방법2.

  SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

처리 후 START SLAVE 하면 됨





- SLAVE DB 추가 및 이전 시 Read_Master_Log_Pos 틀릴경우 맞춰주는 법

슬레이브 서버에서

stop slave; # 슬레이브 서버를 멈춘 뒤

show slave status; # 현재 마스터의 쿼리실행내역을 확인

`Master_Log_File`

`Read_Master_Log_Pos`

# 서버이전 완료 후 슬레이브 서버에서 해당 쿼리 입력

CHANGE MASTER TO

MASTER_HOST = 'xxx.xxx.xxx.xxx'

,MASTER_PORT = 3306

,MASTER_USER = 'repl_user'

,MASTER_PASSWORD = 'NICE!COPYcat#00'

,MASTER_LOG_FILE = '마스터DB의 binary파일'

,MASTER_LOG_POS = 576375776;

START SLAVE;

UPDATE `table` SET `uid` = CASE
    WHEN id = 1 THEN 2952
    WHEN id = 2 THEN 4925
    WHEN id = 3 THEN 1592
    ELSE `uid`
    END
WHERE id  in (1,2,3)


쿼리 한번에 여러ROW의 값을 UPDATE 할 수 있다

1. 노드 찾기

 - 태그 이름으로 노드 찾기 :  $("태그이름"),   $("선택자")

 - 클래스 이름으로 노드 찾기 : $(".클래스이름")

 - ID로 노드 찾기 : $("선택자")

 - 속성으로 노드 찾기 : $("[속성이름=값]")

 - 찾은 요소 개수 구하기 :  .size()    ,     .length

 - 찾은 요소 n번째 접근하기 : .eq(index)    ,    .each(function(index){});

 - 찾은 요소에서 특정요소만을 걸러내기 : .filter("선택자")

 - 찾은 요소에서 특정 자식요소만 찾기 :  .find("선택자")


2. 자식 노드 찾기 

 - 전체 자식 노드 찾기

    -- 텍스트 노드 포함 전체 자식 노드 찾기 :  $("선택자").contents()

    -- 텍스트 노드 제외한 전체 자식 노드 찾기 : $("선택자").children("선택자")

 - n번째 자식 노드 접근

    -- $("선택자").children().eq(N)

    -- $("선택자").children(":eq(N)")

 - 첫번째 자식 노드 접근

    -- $("선택자").children().first()

    -- $("선택자").children(":first")

    -- $("선택자").children().eq(0)

    -- $("선택자").children(":eq(0)")

 - 마지막 자식 노드 접근

    -- $("선택자").children().last()

    -- $("선택자").children(":last")

 

3. 부모 노드 찾기

 - 바로 위의 부모 : $("선택자").parent()

 - 모든 부모 찾기

    -- $("선택자").parents()  모든 부모

 - 모든 부모 중 선택자에 해당하는 부모 찾기

    -- $("선택자").parents("선택자")


4. 형제 노드 찾기

 - 이전 형제 노드 찾기

    -- $("선택자").prev()

    -- $("선택자").prevAll("선택자");

 - 다음 형제 노드 찾기

    -- $("선택자").next()

    -- $("선택자").nextAll("선택자");


5. 노드 생성,추가,이동,삭제

 - 생성

    -- $("노드")

    -- $("선택자").html("<노드>...")

    -- $("노드").clone()

 - 추가

    -- $기준노드.append($추가노드)

    -- $추가노드.appendTo($기준노드)

    -- $기준노드.prepend($추가노드)  

    -- $추가노드.prependTo($기준노드)

    -- $추가노드.insertBefore($기준노드)

    -- $기준노드.before($추가노드)

    -- $추가노드.insertAfter($기준노드)

    -- $기준노드.after($추가노드)

 - 삭제

    -- $("선택자").remove()

 - 이동

    -- $기준노드.append($이동노드)  

    -- $이동노드.appendTo($기준노드)

    -- $이동노드.insertBefore($기준노드)

    -- $기준노드.before($이동노드)

    -- $이동노드.insertAfter($기준노드)   

    -- $기준노드.after($이동노드)


6. 텍스트 노드 다루기

 - 텍스트 노드 생성 : $("텍스트")

 - 텍스트 노드 추가 : $기준노드.append("텍스트")

 - 텍스트 노드 변경 : $기준노드.text("새로운 텍스트")


기본 CSS 셀렉터 사용하기


a - 모든 링크(<a>) 엘리먼트와 일치하는 셀렉터.

#exID - exID를 아이디로 가지는 엘리먼트와 일치하는 셀렉터.

.exClass - exClass를 클래스로 가지는 엘리먼트와 일치하는 셀렉터.

a#exID.exClass - 아이디가 exID 이고, 클래스가 exClass인 링크와 일치하는 셀렉터.

p a.exClass - <p> 엘리먼트 내에 클래스가 exClass인 모든 링크와 일치하는 셀렉터.

아래 코드와 같이 쓰임

$("p a.exClass")


자식 셀렉터(child selector) : 부모와 자식 엘리먼트는 오른쪽 부등호(>)로 구분

예제) ul.myList > li > a

설명) myList 클래스를 지닌 <ul> 엘리먼트의 바로 아래 자식 리스트 앨리먼트인 <li>에서

바로 아래 자식 링크만 선택한다.

[ 어트리뷰트 셀렉터 ]

a[href^=http://] - href의 값이 http://로 시작하는 모든 링크를 의미. 캐럿문자(^)는 값의 시작 부분이 일치하는지를 뜻함

form[method] - 명시적으로 method 어트리뷰트를 가지는 <form> 엘리먼트

input[type=text] - type이 text인 모든 input 엘리먼트

div[title^=my] - title 어트리뷰트의 값이 my로 시작하는 모든 <div> 엘리먼트

a[href$=.pdf] - PDF 파일을 참조하는 모든 링크

a[href*=jquery.com] - jQuery 사이트를 참조하는 모든 <a> 엘리먼트. *는 어트리뷰트의 값이 임의의 문자열을 포함하는 엘리먼트를 찾아오라는 셀렉터.

li:has(a) - <a> 엘리먼트를 포함하는 모든 <li> 엘리먼트

li a - <li>엘리먼트 바로 아래 자식의 모든 <a> 엘리먼트



기본 CSS 셀렉터


* - 모든 엘리먼트와 일치

E - 태그명이 E인 모든 엘리먼트와 일치

E F - E의 자손이면서 태그명이 F인 모든 엘리먼트와 일치

E>F - E의 바로 아래 자식이면서 태그명이 F인 모든 엘리먼트와 일치

E+F - E의 형제 엘리먼트로 바로 다음에 나오는 엘리먼트 F와 일치

E~F - E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F와 일치

E:has(F) - 태그명이 F인 자손을 하나 이상 가지는 태그명이 E인 모든 엘리먼트와 일치

E.C - 클래스명 C를 가지는 모든 엘리먼트 E와 일치. E의 생략은 *.C와 동일함.

E#I - 아이디가 I인 엘리먼트 E와 일치. E의 생략은 *#I와 동일함.

E[A] - 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A=V] - 값이 V인 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A^=V] - 값이 V로 시작하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A$=V] - 값이 V로 끝나는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치

E[A*=V] - 값에 V를 포함하는 어트리뷰트 A를 가지는 모든 엘리먼트 E와 일치



위치 셀렉터

a:first - 페이지에서 첫 번째 <a> 엘리먼트

p:odd - 모든 홀수 번째 문단 <p> 엘리먼트

p:even - 모든 짝수 번째 문단 <p> 엘리먼트

li:last-child - 부모 엘리먼트의 마지막 자식 엘리먼트

:first - 페이지에서 처음으로 일치하는 엘리먼트

:last - 페이지에서 마지막으로 일치하는 엘리먼트

:first-child - 첫 번째 자식 엘리먼트

:last-child - 마지막 자식 엘리먼트

:only-child - 형제가 없는 모든 엘리먼트를 반환한다

:nth-child(n) - n번째 자식 엘리먼트

:nth-child(even:odd) - 짝수 또는 홀수 자식 엘리먼트

:nth-child(Xn+Y) - 전달된 공식에 따른 n번째 자식 엘리먼트. Y는 0인 경우 생략 가능.

 li:nth-child(3n)은 3의 배수 번째 아이템을 반환

 li:nth-child(5n+1)은 5의 배수 + 1 번째 아이템을 반환

:even - 페이지 전체의 짝수 번째 엘리먼트

:odd - 페이지 전체의 홀수 번째 엘리먼트

:eq(n) - n번째로 일치하는 엘리먼트

:gt(n) - n번째 엘리먼트(포함되지 않음) 이후의 엘리먼트와 일치.

:lt(n) - n번째 엘리먼트(포함되지 않음) 이전의 엘리먼트와 일치.


n번째 자식 셀렉터는 CSS와 호환성을 유지하려고 인덱스를 1부터 시작.

jQuery 정의 셀렉터는 범용 프로그래밍 규약에 따라 인덱스를 0부터 시작.




정의 셀렉터

:animated - 현재 애니메이션이 적용되고 있는 엘리먼트를 선택

:button - 모든 버튼을 선택 ( input[type=submit], input[type=reset], input[type=button], button )

:checkbox - 체크박스 엘리먼트만 선택

:checked - 선택된 체크박스나 라디오 버튼만 선택 (CSS에서 지원)

:contains(foo) - 텍스트 foo를 포함하는 엘리먼트만 선택

:disabled - 인터페이스에서 비활성화 상태인 모든 폼 엘리먼트를 선택 (CSS에서 지원)

:enabled - 인터페이스에서 활성화 상태인 모든 엘리먼트를 선택 (CSS에서 지원)

:file - 모든 파일 엘리먼트를 선택 ( input[type=file] )

:header - 헤더 엘리먼트만 선택 <h1>부터 <h6>까지 선택

:hidden - 감춰진 엘리먼트만 선택

:image - 폼 이미지를 선택 ( input[type=image] )

:input - 폼 엘리먼트만 선택 ( input, select, textarea, button )

:not(filter) - 필터의 값을 반대로 변경 ( 1.3 버전에서는 변경됨 )

:parent - 빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트를 선택

:password - 패스워드 엘리먼트만 선택 ( input[type=password] )

:radio - 라디오 버튼 엘리먼트만 선택 ( input[type=radio] )

:reset - 리셋 버튼 선택 ( input[type=reset] 이나 button[type=reset] )

:selected - 선택된 엘리먼트만 선택

:submit - 전송 버튼을 선택 ( button[type=submit] 이나 input[type=submit] )

:text - 텍스트 엘리먼트만 선택 ( input[type=text] )

:visible - 보이는 엘리먼트만 선택


:checkbox:checked:enabled - 활성화되고 선택된 체크박스만 선택




:not 필터

- 필터 결과가 반대로 나오게 함.

- CSS 필터에서 지원

- jQuery 정의 셀렉터에서도 동작

- 필터 셀렉터에는 적용할 수 있지만 찾기 셀렉터에는 적용하지 못한다.

- 모두 콜론 문자(:)나 대괄호 문자([)로 시작.

input:not(:checkbox) - 체크박스가 아닌 <input> 엘리먼트 선택

필터 셀렉터 - 기준을 추가해서 일치하는 엘리먼트의 집합을 줄여나간다.

찾기 셀렉터 - 이미 선택된 엘리먼트와 맺은 관계를 통해 다른 엘리먼트를 찾는다. [ 자손 셀렉터(공백문자), 자식 셀렉터(>), 형제 셀렉터(+) ]가 있다.



커맨드 문법


size() - 확장 집합의 엘리먼트 개수를 반환

예제) $('a').size()

설명) 모든 <a> 타입의 엘리먼트의 개수를 반환

get(index) - 확장된 집합에서 하나 또는 모든 일치하는 엘리먼트를 가져온다. 매개변수가 명시되지 않았다면 모든 엘리먼트를 자바스크립트 배열로 반환

예제) $('img[alt]').get(0)

index(element) - 확장 집합에서 전달된 엘리먼트를 찾고, 집합에서 찾은 엘리먼트의 인덱스를 반환. 집합에 해당 엘리먼트가 존재하지 않으면 -1을 반환

예제) var n = $('img').index($('img#findMe')[0]);

add(expression) - expression 매개변수로 명시한 엘리먼트를 확장 집합에 추가한다. 표현식에는 셀렉터, HTML, 코드, DOM 엘리먼트, DOM 엘리먼트 배열이 올 수 있다.

예제1) $('img[alt]').add('img[title]')

예제2) $('img[alt]').addClass('thickBorder').add('img[title]').addClass('seeThrough')

설명2) alt 어트리뷰트를 가진 모든 <img>엘리먼트의 확장 집합을 생성한 뒤 두꺼운 테두리를 만드는 클래스를 적용. title 어트리 뷰트를 가진 <img> 엘리먼트를 추가하고, 마지막으로 투명도를 주는 클래스를 적용.

not(expression) - expression 매개변수의 값에 따라서 일치하는 집합에서 엘리먼트를 제거.

예제) $('img[title]').not('[title*=puppy]')

설명) title 어트리뷰트를 지닌 모든 <img> 엘리먼트를 선택할 때, title 어트리뷰트 값이 puppy를 포함하는 엘리먼트를 제외.

filter(expression) - 전달 받은 셀렉터 표현식이나 필터링 함수를 이용해서 확장 집합에서 엘리먼트를 필터링.

예제) $('td').filter(function(){return this.innerHTML.match(/^\d+$/)})

설명) 모든 <td> 엘리먼트로 구성된 확장 집합을 생성한 다음 엘리먼트 각각에 대해 filter() 메서드에 전달된 함수를 호출.

호출된 함수를 this값으로 현재 순회 중인 엘리먼트를 이용.

전달된 함수는 정규 표현식을 사용하여 숫자로 내용이 구성된 패턴을 만족하는지 검사.

필터 함수를 호출한 결과로 false를 반환하는 엘리먼트가 모두 확장 집합에서 제거

slice(begin, end) - 일치하는 집합에서 연속하는 일부분을 포함하는 새로운 확장 집합을 생성하고 반환

- begin : 반환되는 부분 집합에 포함될 첫 엘리먼트의 위치로, 0부터 시작

- end : 반환되는 부분 집합에 포함될 마지막 엘리먼트의 바로 다음 위치로, 0부터 시작하며, 생략하면 집합의 마지막까지 포함한다.

예제1) $('*').slice(2,3);

설명1) 페이지에 있는 모든 엘리먼트를 선택한 다음 세 번째 엘리먼트를 담은 새로운 집합을 생성

예제2) $('*').slice(0,4);

설명2) 페이지에 있는 모든 엘리먼트를 선택한 다음 처음 네 개의 엘리먼트를 포함한 집합을 생성

예제3) $('*').slice(4);

설명4) 페이지의 모든 엘리먼트와 일치한 다음 처음 네 엘리먼트를 제외한 모든 엘리먼트의 집합을 반환

  < 관계를 통해 새로운 확장 집합을 얻을 수 있는 메서드 >

  children() - 확장 엘리먼트의 고유한 자식으로 구성된 확장 집합을 반환

  contents() - 엘리먼트의 콘텐츠로 구성된 확장 집합을 반환. 텍스트 노드도 포함되며 주로 <iframe> 엘리먼트의 콘텐츠를 얻고자 사용

  next() - 확장 집합 내의 각 확장 엘리먼트 바로 다음에 나오는 형제로 구성된 확장 집합을 반환

  nextAll() - 확장 집합 내의 각 확장 엘리먼트 다음에 나오는 모든 형제로 구성된 확장 집합을 반환

  parent() - 확장 집합 내에 있는 모든 확장 엘리먼트의 바로 위 부모로 구성된 확장 집합을 반환

  parents() - 모든 확장 엘리먼트의 조상으로 구성된 확장 집합을 반환. 바로 위 부모와 상위의 모든 조상이 포함되지만 문서 루트(document root)는 포함되지 않는다.

  prev() - 확장 집합 내의 각 확장 엘리먼트 바로 이전에 나오는 형제로 구성된 확장 집합을 반환

  prevAll() - 확장 집합 내의 각 확장 엘리먼트 이전에 나오는 모든 형제로 구성된 확장 집합을 반환

  siblings() - 확장 엘리먼트의 모든 형제를 포함하는 확장 집합을 반환

find(selector) - 원본의 모든 엘리먼트 중 전달된 셀렉터 표현식과 일치하는 엘리먼트로 구성된 새로운 확장 집합을 반환

예제) wrappedSet.find('p cite')

설명) 변수 wrappedSet에 할당된 확장 집합에서, 문단 <p>에 포함된 모든 인용문 <cite>로 구성된 확장 집합을 반환

is(selector) - 확장 집합에 전달된 셀렉터 표현식과 일치하는 엘리먼트가 있는지 확인. 엘리먼트가 하나 이상 셀렉터와 일치하면 true를, 그렇지 않으면 false를 반환

예제) var hasImage = $('*').is('img');

설명) 현제 페이지에 이미지 엘리먼트가 있으면 hasImage 변수의 값을 true로 설정

end() - jQuery 커맨드 체인에서 사용하며 이전 확장 집합으로 돌아간다.

예제) $('img').clone().appendTo('#somewhere').end().addClass('beenCloned');

설명) 페이지의 모든 <img> 엘리먼트로 구성된 원본 확장 집합을 close() 메서드를 통해 복사본 확장 집합을 생성한 뒤, 복사본인 두 번째 확장 집합을 반환한다. 복사본 확장 집합에 appendTo() 커맨드를 수행한 뒤, end() 커맨드를 통해 현재 확장 집합(복사본 확장 집합)에서 앞으로 돌아가서 이전 확장 집합(원본 확장 집합)을 반환하고, 원본 확장 집합에 addClass() 커맨드를 수행한다.

andSelf() - 커맨드 체인에서 이전 확장 집합 두 개를 하나로 합친다



출처: http://crosstheline.tistory.com/41 [이거 알아영???ㅎㅎㅎ]

+ Recent posts