728x90


728x90
728x90


영원할 줄 알았던 사랑이 떠났습니다.
이미 이별을 준비했던 거였지만,
흔적으로 남겨두기로 했습니다.

이미 놔줘야 할 시기를 가늠해 보곤 했지만,
이렇게 떠나보내니
마음의 무거운 짐을 떨쳐낸 기분입니다.

10년이 지나고
또 20년이 지나고
변하는 건 좀더 이해할 수 있는 마음 인 듯합니다.
몸은 늙지만, 마음까지 늙어지지는 않습니다.

맑은 호수처럼 깊은 그곳에서 숨쉬는 고결한 사랑의 의미를 간직하면 그만입니다.
눈시울을 적시며
아파하던 그 기억,
함께하며 기뻐하는 그 기억,
아련히 파도를 따라 바다 저 깊은 곳으로 떠내려 가겠죠.

이별하는 순간에
고요한 듯 맑게 빛나던 가슴 속의 움직임이
사랑을 불러오는 빛이 되어 주겠죠.

사랑을 놔주듯,
사람을 놔주듯,
이제 제 자신을 놔 주어야 할 때 입니다.
자유로운 그 마음을 새로운 사랑에게
맑게 빛나는 그 마음을 새로운 사람에게 주고 싶습니다.

사랑합니다.
사랑해.
오늘, 다시 사랑하고 싶습니다.
728x90

'에세이' 카테고리의 다른 글

강희제, 옹정제, 건륭제가 남긴 삼제(三題)  (0) 2011.08.22
이별을 준비합니다.  (0) 2011.08.15
Always with me  (0) 2011.08.01
초대장 가져가세요.(완료)  (4) 2011.07.30
어느 약속이 더 중요한가?  (0) 2011.07.29
728x90

1. http://www.taeyo.pe.kr/Lecture/20_TIps/Danny02.asp 참고
 
1. 모든 ASP 코드 페이지 첫줄에 다음과 같은 코드를 추가합니다
<% @LANGUAGE='VBSCRIPT' CODEPAGE='65001' %>
 
2. Meta 테그를 다음과 같이 추가 합니다.
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
 
3. 에디트플러스나 울트라 에디터에서 수정후 저장할 때 반드시 Encoding 방식을 UTF-8 로 저장합니다
 
4.DB Insert/Update 시 숫자 타입을 제외한 모든 대상에 N을 추가 합니다
Insert [into] table_name [(column_list)] Value N[data_value]
 
5.DB like 검색시 N 추가
 
6. 파일 첨부 DEXT Upload사용(영문으로 설치)
 SET uploadform = Server.CreateObject("DEXT.FileUpload")
 uploadform.DefaultPath = Server.MapPath(ESP_BBS_DATA)
 uploadform.CodePage = 65001
 wFileSize = 0
 rAttachment = uploadform("txtAttachFile")
 
 If Len(rAttachment) > 0 Then
  wFileName =  uploadform("txtAttachFile").FileName
  wFileSize =  uploadform("txtAttachFile").FileLen
 
  response.write uploadform.DefaultPath
  rAttachment = uploadform.SaveAs(uploadform.DefaultPath & "" & wFileName , False)
  rAttachment = UploadForm.LastSavedFileName
 End If
 
7. 파일 다운로드
 
<% @LANGUAGE='VBSCRIPT!' CODEPAGE='65001' %>
<%
 'Response.Charset = "UTF-8"
 filepath = Request.QueryString("txtFilepath") '// form으로 파라메터 전달해야 함.
 filename = Request.QueryString("txtFilename")'// form으로 파라메터 전달해야 함.
 
 If filepath = "" Then
  filepath=server.MapPath( Request.QueryString("txtFilename"))
  filename = Mid(filepath, InStrRev(filepath, "")+1)
 Else
  filepath=server.MapPath(filepath)
  filename =  Request.QueryString("txtFilename")
  If filename = "" Then
   filename = Request.QueryString("txtattachment")
  End If
 End If

 filepath = filepath &"" & filename
Call FileDown
%>
 
<%
Sub FileDown
' 참고http://www.taeyo.pe.kr/Lecture/20_TIps/Danny03.asp
 
 Response.Buffer = False
 Response.ContentType = "application/x-msdownload"
 'ContentType 를 선언합니다.
 'server.HTMLEncode
 'server.URLPathEncode
 Response.AddHeader "Content-Disposition","attachment; filename=" & server.URLPathEncode(filename) '//server.URLPathEncode 사용해야만 파일명 재대로 출력
 '헤더값이 첨부파일을 선언합니다.
 Set objStream = Server.CreateObject("ADODB.Stream")
 'Stream 을 이용합니다.
 objStream.Open
 '무엇이든 Set 으로 정의했으면 열어야 겠지요^^
 objStream.Type = 1
 objStream.LoadFromFile filepath
 '절대경로 입니다.
 download = objStream.Read
 Response.BinaryWrite download
 '이게 보통 Response.Redirect 로 파일로 연결시켜주는 부분을 대신하여 사용된 것입니다.
 Set objstream = nothing
 '초기화시키구요.
End Sub
%>
 
<%
Sub DEXTDown   ' DEXT.FileDownload 는 일본어 OS에 영문으로 설치시 한글파일 찾지 못함.(DextUpload 2.0까지는 그랬음)
 'On Error Resume Next
 Response.Buffer = False
 Response.AddHeader "Content-Disposition","inline;filename=" &  server.URLPathEncode(filename)
 set objFS = Server.CreateObject("Scripting.FileSystemObject")

 set objF = objFS.GetFile(filepath)
 
 Response.AddHeader "Content-Length", objF.Size
 set objF = nothing
 set objFS = nothing
 Response.ContentType = "application/x-msdownload"
 Response.CacheControl = "public"
 Set objDownload = Server.CreateObject("DEXT.FileDownload")
 objDownload.Download filepath
 Set uploadform = Nothing
End Sub
%>
 
8. CDO Mail발송
Dim iMsg
Dim iConf
Dim Flds
Dim strHTML
Const cdoSendUsingPort = 2 '1:로컬, 2:외부 smtp
set iMsg = CreateObject("CDO.Message")
set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
Flds.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  '포트번호
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") =  "" 'ID
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") =  "" '암호

Flds.Update
Set iMsg.Configuration = iConf
iMsg.To = "xxxx@xxx.ccx" 'ToDo: Enter a valid email address.
iMsg.From = "xxxx@xxx.ccx"  'ToDo: Enter a valid email address.
iMsg.Subject = "This is a test CDOSYS message (Sent via Port 25)"
 
'iMsg..TextBody = strHTMLMsg '// 텍스트
iMsg.HTMLBody = strHTML  '// HTML 제목 깨짐 발생..

iMsg.BodyPart.Charset="UTF-8" '/// 한글을 위해선 꼭 넣어 주어야 합니다.
iMsg.HTMLBodyPart.Charset="UTF-8" '/// 한글을 위해선 꼭 넣어 주어야 합니다.
iMsg.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
 
 
9. ASP에서 배달 확인/ 읽음 확인 구현 방법 http://tong.nate.com/windeo/5767827

http://support.microsoft.com/default.aspx?scid=kb;ko;286430

<%
Set oMsg = CreateObject("CDO.Message")
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
‘ 생성되는 메시지가 SMTP pickup 디렉터리가 아닌 SMTP 서비스로 전송되게 합니다.
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "이름"
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxx"
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "seo-msg-01"
‘ 생성되는 메시지의 서버, 사서함 및 암호
oMsg.Configuration.Fields.Update

oMsg.From = "smpark@microsoft.com"
oMsg.To = "smpark@microsoft.com"

oMsg.Subject = "읽음 확인 및 배달 확인"
oMsg.DSNOptions = 14
‘ 이 메시지의 배달 상태 확인(delivery status notification:DSN)값으로 14는 배달 성공, 실패 및 지연시
‘ 확인메시지 생성
oMsg.Fields("urn:schemas:mailheader:return-receipt-to") = smpark@microsoft.com <mailto:smpark@microsoft.com>
‘ 받는 사람이 이 메시지를 열었을 때 읽음 확인 메시지가 여기에서 지정된 사람에게 보내집니다.
oMsg.Fields("urn:schemas:mailheader:disposition-notification-to") = smpark@microsoft.com <mailto:smpark@microsoft.com>
‘ MDN(Message Disposition Notification)은 이 메시지의 확인 메시지가 리턴 될 수신자를 지정합니다.
‘ MDN에 대하여는 Request for Comments (RFC) 2298에 자세히 설명됩니다.
oMsg.TextBody = " SMTP 서버를 통한 읽음 확인 및 배달 확인 메시지"
oMsg.Fields.Update
oMsg.Send

Set oMsg = Nothing
%>
 

728x90

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

windows 2003 ftp 설정  (0) 2011.09.05
winhttp 사용법  (0) 2011.08.22
ASP에서 CSV 파일 생성하기  (0) 2011.08.03
ON Error Resume Next  (0) 2011.06.24
ASP 오류 'ASP 0115'  (0) 2011.06.15
728x90

<%
' 여기서 엑셀 파일명 지정
filename = "apply_plt_excel"

Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-excel"

Response.AddHeader "Content-disposition","attachment;filename=" & filename & ".xls"
%>

 

<!-- METADATA TYPE="typelib" FILE="C:\Program Files\common files\system\ado\msado15.dll" -->

<%
filename = "list"
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition","attachment; filename=" & filename & ".csv"
%>


<!-- METADATA TYPE="typelib" FILE="C:\Program Files\common files\system\ado\msado15.dll" -->
맨위 상단에 선언하시구여..

해드 부분에 밑에 처럼.. 하시면 됩니다.
Response.ContentType="application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename="&date()&".csv"

그리고 이 이하로는 html로.. 디잔 만드시고.. 데이타 뿌릴내용 일반 게시판 짜듯이 하셔서 하심 됩니다.

참고로 위에 보심 data()이기 때문에 파일이름이 현재날짜.csv로 저장되겟네요...

 

 

 

<script language = "javascript">
function Save()
{
Some.document.open("csv","replace")
// Some.document.write(document.documentElement.outerHTML )
// Some.document.close()
// Some.focus()
Some.document.execCommand('SaveAs','csv')
}
</script>

<iframe id="Some" name="Some" style="display:none" src="statistics.asp"></iframe>
<input type="button" value="저장" onClick="javascript:Save()"></p>

 

 


부탁드립니다...
우선 아래 소스코드는 웹사이트에서 찾았구요...
직접 csv파일을 생성해보려구 데이터베이스, 테이블 설계와 데이터입력후
아래 코드와 같이 작성후 웹브라우저를 이용해 테스트해보았는데,,
아래와 같은 오류가 나오던데,,, 혹시 아시면 도움말좀 부탁드리겠습니다.
############################################################
오류 형식:
ADODB.Recordset (0x800A0BB9)
잘못된 형식이거나 올바른 범위 밖에 있거나 서로 충돌하는 인수입니다.
/asp테스트/csv.asp, line 16
############################################################

<%
Response.Buffer = True
Response.Expires = 0
dim strSQL '변수 정의
dim strFile
<!--#include file=adovbs.inc-->


set dbobj = server.createobject("adodb.connection") 'DB오브젝트
dbobj.open "dsn=lock;uid=lock;pwd=12345;" 'DSN을 이용한 DB open
Set oRS = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT field1, field2 , field3, field4, field5"
strSQL = trSQL & " FROM csv_test"
strSQL = strSQL & " WHERE field1 = 'condition'"
oRS.Open strSQL, dbobj, adOpenForwardOnly, adLockReadOnly, adCmdText '상수로 선언
된 부분 필요

%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>EXCEL 파일 생성</title>
</head>
<body>
<%
CreateCSVFile() 'EXCEL 파일 생성 함수화

Set oRS = Nothing
Set oConn = Nothing
Response.Flush
%>
</body>
</html>

<SCRIPT LANGUAGE=vbscript RUNAT=Server>
Function GenFileName() '파일 이름을 만드는 부분
dim fname
fname = "fileheader"
GenFileName = fname
End Function

Function CreateCSVFile() '실제 엑셀파일을 생성 하는 부분
'파일 시스템 오브젝트를 이용한 파일 생성
strFile = GenFileName() ' FILE이름 생성(함수 호출)
Set fs = Server.CreateObject("Scripting.FileSystemObject") '해당 경로에 파일 확장
명이 csv인 파일을 생성한다.
Set a = fs.CreateTextFile("d:/test" & "\" & strFile & ".csv",True)
If Not oRS.EOF Then
strtext = chr(34) & "컬럼1" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼2" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼3" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼4" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼5" & chr(34) & ","
a.WriteLine(strtext)
Do Until oRS.EOF '조건에 맞는 레코드가 있을 때까지 파일에 input
For i = 0 To oRS.fields.Count-1
strtext = oRS.fields(i) & chr(34) & ","
a.Write(strtext)
Next
a.Writeline()
oRS.MoveNext
Loop
End If
a.Close
Set fs=Nothing
End Function

</SCRIPT>

 

728x90

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

winhttp 사용법  (0) 2011.08.22
ASP에서 UTF-8로 저장하기  (0) 2011.08.03
ON Error Resume Next  (0) 2011.06.24
ASP 오류 'ASP 0115'  (0) 2011.06.15
asp 함수 정리  (0) 2011.06.08
728x90


728x90
728x90


자주 쓰이는 jQuery AJAX 예제
개발일정에 치여 도무지 블로깅 할 시간이 안나 미치겠네요. 새로운 것 정리하기는 힘들고 자주 사용하고 있는 Ajax 패턴 정리해 봅니다.
Ajax 구현할 때는 거의 jQuery 를 활용하고 있습니다. 모바일 웹 구현할 때 네이티브 앱과 같은 UX 를 위해 Ajax 를 많이 사용하게 됩니다.
■로그인
로그인은 보통 화면에서 폼 값을 입력한 후 해당 값과 함께 ajax 호출합니다.
호출된 액션에서 로그인 관련 인증 및 예외처리 프로세스를 돌인 후
인증 상태에 따라 결과 값을 출력합니다.
출력된 값에 따라 로그인 페이지에서 경고를 띄우든 다음 페이지로 진행하든 처리하죠.
ajax 루틴을 돌고 있을 때 사용할 로딩 바를 띄우는 작업도 함께 해주면 좀더 나은 UX 를 구현할 수 있겠죠.
- login view script
<script>
function checkLogin(){
   
    if( $.trim($("#userId").val()) == '' ){
        alert("아이디를 입력해 주세요.");
        $("#userId").focus();
        return;
    }
    if( $.trim($("#userPw").val()) == '' ){
        alert("비밀번호를 입력해 주세요.");
        $("#userPw").focus();
        return;
    }
    // 로그인 프로세스 호출
    $.ajax({
        type: 'post'
        , async: true
        , url: '/member.do?cmd=login'
        , data: $("#frm").serialize()
        , beforeSend: function() {
             $('#ajax_load_indicator').show().fadeIn('fast');
          }
        , success: function(data) {
            var response = data.trim();
            console.log("success forward : "+response);
            // 메세지 할당
            switch(response) {
                case "nomatch":
                    msg = "아이디 또는 비밀번호가 일치하지 않습니다."; break;
                case "fail":
                    msg = "로그인에 실패 했습니다."; break;
                default :
                    msg = "존재하지 않는 사용자입니다."; break;
            }
            // 분기 처리
            if(response=="success"){
                window.location.href = "${targetUrl}";
            } else {
                alert(msg);
            }
          }
        , error: function(data, status, err) {
         console.log("error forward : "+data);
            alert('서버와의 통신이 실패했습니다.');
          }
        , complete: function() {
         $('#ajax_load_indicator').fadeOut();
          }
    });
}
</script>
- login view html
<form id="frm" name="frm" method="post" action="" onSubmit="checkLogin();return false;">
    <fieldset>
        <legend>login</legend>
        <div class="login_item mg_top34">
            <label>id</label>
            <input id="userId" name="memberVo.xcWebMbrId" type="text" class="i_login" />
        </div>
        <div class="login_item mg_top10">
            <label>password</label>
            <input id="userPw" name="memberVo.xcPswd" type="password" class="i_login" />
        </div>
       
        <div id="ajax_load_indicator" style="display:none">
            <p style="text-align:center; padding:16px 0 0 0"><img src="/mobile/common/img/ajax-loader-line.gif" /></p>
        </div>
        <p class="keeping mg_left89">
            <input id="keepidpw" class="rd_box22" value="1" type="checkbox" name="idPswdSave" >
            <label for="keepidpw">ID/PW 저장</label>
        </p>
        <p class="keeping mg_left20">
            <input id="keepid" class="rd_box22" value="1" type="checkbox" name="idSave" >
            <label for="keepid">ID 저장</label>
        </p>
        <span class="btn_login">
            <input type="image" src="<%=imageUrl%>/btn/btn_login.jpg" title="로그인" onclick="checkLogin();return false;">
        </span>
        <p class="btn_register"><a href="/member.do?cmd=memberJoin"><img src="<%=imageUrl%>/btn/btn_join.jpg" alt="회원가입" /></a>
        <a href="/member.do?cmd=goIdPwFind" class="mg_left5"><img src="<%=imageUrl%>/btn/btn_sch.jpg" alt="아이디/비밀번호 찾기" /></a></p>
    </fieldset>
</form>
- login ajax result
<%@ include file="/mobile/common/include/config.jsp" %>
${result}
■내용 추가
페이지 하단으로 스크롤 이동했을 때 추가되는 자동으로 다음 페이지 데이터가 추가되는 UX를 구현할 때 사용하는 기법으로 jQuery 의 append() 함수를 사용할 수 있다.
- product list view script
<script>
function paging(){
    count++;
   
    $.ajax({
        type: 'post'
        , async: true
        , url: "/display.do?cmd=productListAppend&ordFlag="+'${ordFlag}'+"&categoryCd="+categoryCd+"&itemCode="+'${itemCode}'+"&count="+count
        , beforeSend: function() {
             $('#ajax_load_indicator').show().fadeIn('fast');
          }
        , success: function(data) {
            var response = data.trim();
            console.log("success forward : "+response);
            // 상품 리스트 할당
            $('#view_list').append(response);
            $('#product_count').html($('#view_list li.thumb').size());
          }
        , error: function(data, status, err) {
            console.log("error forward : "+data);
            alert('서버와의 통신이 실패했습니다.');
          }
        , complete: function() {
            $('#ajax_load_indicator').fadeOut();
          }
    });
}
</script>
- product list view html
<!-- 상품 목록 -->
<div id="view_list" class="product_list" style="display: none;">
<c:forEach var="list" items="${returnMap}">
  <a href="/display.do?cmd=productView&brandCd=${list.brandCd }&prodCd=${list.prodCd }&ordFlag=${ordFlag }&styleYY=${list.styleYY }&priceDpYn=${list.priceDpYn }&listPrice=${list.listPrice }&categoryCd=${categoryCd}&itemCode=${itemCode}&rNum=${list.rNum }&count=${count}">
    <ul>
      <li class="thumb"><img src="${list.listImg }" alt="상품이미지" /></li>
      <li class="b_title"><span class="brand">[${list.brandNm }]</span><span class="title">${list.prodNm }</span></li>
      <li class="price">
      <c:if test="${list.priceDpYn eq 'Y'}">
      ${list.listPrice }원
      </c:if>
      <c:if test="${list.priceDpYn eq 'N'}">
      <span><a href="#"><img src="<%=imageUrl%>/common/ic_login.png" alt="로그인" /></a></span>
      </c:if>
      </li>
      <li class="btn_go"><img src="<%=imageUrl%>/btn/btn_go.png" alt="" /></li>
    </ul>
  </a>
</c:forEach>
</div>
<div id="ajax_load_indicator" style="display:none">
    <p style="text-align:center; padding:14px 0 14px 0"><img src="/mobile/common/img/ajax-loader-line.gif" /></p>
</div>
   
<!-- 더보기 bar-->
<div class="more_bar">
<a href="javascript:paging()">
  <ul class="sec01">
    <li class="btn_arr"><img src="<%=imageUrl%>/common/arr_down.png" alt="" /></li>
    <li class="text_more">15개 더보기</li>
    <li class="text_num"><span id="product_count">${total}</span> / 999</li>
  </ul>
  </a>
  <p><a href="#"><img src="<%=imageUrl%>/btn/btn_top.jpg" alt="맨위로" /></a></p>
</div> 
- append view html
<%@ include file="/mobile/common/include/config.jsp"%>
<!-- 상품 목록 -->
<c:forEach var="list" items="${returnMap}">
    <a href="/display.do?cmd=productView&brandCd=${list.brandCd }&prodCd=${list.prodCd }&ordFlag=${ordFlag }&styleYY=${list.styleYY }&priceDpYn=${list.priceDpYn }&listPrice=${list.listPrice }&categoryCd=${categoryCd}&itemCode=${itemCode}&rNum=${list.rNum }&count=${count}">
        <ul>
            <li class="thumb"><img src="${list.listImg }" alt="상품이미지" /></li>
            <li class="b_title"><span class="brand">[HAZZYS]</span><span
                class="title">${list.prodNm }</span></li>
            <li class="price">
            <c:if test="${list.priceDpYn eq 'Y'}">
            ${list.listPrice }원
            </c:if>
            <c:if test="${list.priceDpYn eq 'N'}">
            <span><a href="#"><img src="<%=imageUrl%>/common/ic_login.png" alt="로그인" /></a></span>
            </c:if>
            </li>
            <li class="btn_go"><img src="<%=imageUrl%>/btn/btn_go.png" alt="" /></li>
        </ul>
    </a>
</c:forEach>

728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
jQuery 요약  (0) 2011.08.02
자바스크립트 실수 모음  (0) 2011.05.20
자바스크립트 팁  (0) 2011.05.20
728x90

[jQuery Cookbook - 1장 jQuery의 기초]

 

• jQuery는 HTML문서, 보다 정확하게는 문서객체모델(DOM)과 자바스크립트 사이의 상호작용을 간단하게 해주는 오픈소스자바스크립트 라이브러리이다.
•jQuery의 철학 : Write less, do more (적게 작성하고, 보다 많이 한다)
•jQuery 선택자 : #은 id, .은 class
•jQuery('div').hide() => 모든 div를 숨긴다.
•jQuery('div').text('new content') => 모든 div의 내부텍스트를 변경한다.
•jQuery('div').addClass("updatedContent") => 모든 div에 updatedContent클래스를 추가한다.
•jQuery('div').show() => 모든 div를 나타낸다.
•jQuery 온라인문서 : http://docs.jquery.com/Main_Page
•문서에 jQuery 포함하기 (부가적인 기능향상을 위해 방법1을 사용하자!)
방법1 : <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

방법2 : 다운로드 받아 포함시키기

•DOM 로드된 후 함수 실행 (로딩속도 향상을 위해 방법3을 사용하자!)

방법1 : jQuery(document).ready(function() { //실행구문 })

방법2 : jQuery(function() { //실행구문 })

방법3 : </body> 앞에 스크립트 추가

•DOM요소 선택

jQuery('a') => 모든 a요소 (== document.getElementsByTagName('a'))

jQuery('a').length => 모든 a요소의 개수

jQuery('input', $('form')) => 모든 form요소내의 input요소(들)

jQuery('input', document.forms[0]) => 첫번째 form요소내의 input요소(들)

jQuery('input', 'body') => body요소내의 input요소(들)

•DOM요소 필터링

jQuery('a').filter('.external') => 모든 a요소 중 클래스명이 external인 a요소(들) (== jQuery('a').filter(function(index) { return $(this).hasClass('external'); }))

jQuery('p').filter('.middle').end() => 모든 p요소 중 클래스명이 middle인 요소(들)의 필터링 전 요소(들) (== jQuery('p'))

•파괴작업 (end()도 파괴작업의 이) : 일치된 jQuery요소집합에 변경을 가하는 모든 종류의 작업
•DOM요소 검색

jQuery('p').find('em') => 모든 p요소 하위의 em요소(들) (== jQuery('em', $('p')) ==jQuery('p em'))

jQuery('p').filter('.middle').find('span').end().end() => 모든 p요소 중 클래스명이 middle인 요소(들)의 하위 span요소(들)의 검색 전, 필터링 전 요소(들)

(==jQuery('p'))

•filter는 현재 요소(들)에 대해, find는 하위 요소(들)에 대해 작동
•DOM 셀렉션 추가

jQuery('div').find('p').andSelf().css('border', '1px solid #993300'); => div요소(들)과 하위 p요소(들) 모두에 대해 스타일 적용

•DOM 탐색

jQuery('li:eq(1)') => 두번째 li 요소

관련메소드 => next():다음요소, prev():이전요소, parent():상위요소, children():하위요소들, nextAll():다음요소들, prevAll():이전요소들

jQuery('li:eq(1)').parent().children(':last') => 두번째 li요소의 상위요소의 마지막 하위요소

기타 탐색관련 메소드 : http://docs.jquery.com/Traversing

•DOM요소 생성

jQuery('<p><a>jQuery</a></p>'); => p요소 생성

jQuery('<p><a>jQuery</a></p>').find('a').attr('href', 'http://www.jquery.com'); => p요소를 생성하고 하위 a요소(들)을 찾아 속성 변경

jQuery('<p><a>jQuery</a></p>').find('a').attr('href', 'http://www.jquery.com').end().appendTo('body');

=> p요소를 생성하고 하위 a요소(들)을 찾아 속성 변경 후 생성된 p 요소를 body요소 하위로 포함시킴

•DOM요소 제거

jQuery('a).remove(); => 모든 a요소 제거

jQuery('a').remove('.remove'); => 클래스명이 remove인 모든 a요소 제거

•DOM요소 교체

jQuery('li.remove').replaceWith('<li>removed</li>'); => 클래스명이 remove인 모든 li요소들을 뒤에 나온 li요소로 변경

•DOM요소 복제

jQuery('ul').clone().appendTo('body'); => 모든 ul요소들을 복제하여 body의 하위요소로 포함시킴

jQuery('ul#a li').click(function() { //실행구문 }).parent().clone(true).find('li').appendTo('#b').end().end().remove();

=> 아이디가 a인 ul 하위의 li요소들을 클릭하면 함수를 실행시키고 부모요소인 ul요소를 찾아 복제(true이면 이벤트까지도 복제됨)한 후 복제된 ul의

하위 li요소들을 찾아 아이디가 b인 요소의 하위요소로 포함시킨 후 기존 ul을 제거

•속성 제어

jQuery('a').attr('href', 'http://www.jquery.com').attr('href'); => 모든 a요소의 href속성의 값을 설정하고 가져옴

jQuery('a').attr({'href':'http://www.jquery.com', 'title':'jquery.com'}) => 모든 a요소의 href속성값과 title속성값을 설정

jQuery('a').removeAttr('title') => 모든 a요소의 title속성 제거

•class 조작

addClass() : 클래스 추가  hasClass() : 클래스 값 확인  removeClass() : 클래스 제거  toggleClass() : 클래스 없으면 추가, 있으면 제거

•HTML 컨텐츠 / 텍스트 조작

jQuery('p').html('<strong>Hello World</strong>'); => 모든 p요소에 html컨텐츠 삽입

jQuery('p').html(); => 모든 p요소의 html 가져옴

jQuery('p').text('Hello World'); => 모든 p요소에 text 삽입 (text메소드는 html을 escape한다)

jQuery('p').text(); => 모든 p요소의 text 가져옴

•전역적인 충돌 없이 $ 사용

(function($) {

})(jQuery);

 

 

[JQuery Cookbook - 2장 jQuery로 요소 선택하기]

 

• jQuery함수내에서 CSS셀렉터 사용
jQuery('#content p a'); => id가 content인 요소의 하위 모든 p요소의 하위 모든 a요소들
jQuery('#content p a').addClass('selected'); => 선택된 요소들에 selected 클래스 적용
•직속 자손 결합자 (>) : 계층적 관계
jQuery('#nav li > a'); => id가 nav인 요소의 하위 모든 li요소의 직속 자손인 a요소들

jQuery('> p', '#content'); => id가 content인 요소의 직속 자손인 p요소들 => jQuery('#content > p')와 같다

jQuery('#content').children(); => id가 content인 요소의 모든 직속 자손들 => jQuery('#content').find('> *');과 같다

jQuery('#content').children('p'); => id가 content인 요소의 모든 직속 p요소들

•인접 형제 결합자 (+) : 같은 레벨벨
jQuery('h1 + h2'); => h1요소에 인접한 h2요소들 => jQuery('h1').next('h2');와 같다
jQuery('h1').siblings('h2, h3, p'); => h1요소에 인접한 h2나 h3나 p 요소들
jQuery('li.selected').nextAll('li'); => selected클래스를 가진 모든 li요소들 다음에 나오는 모든 li요소들
•일반 형제 결합자 (~)

jQuery('li.selected ~ li'); => selected클래스를 가진 모든 li요소들 다음에 나오는 모든 li요소들

•필터

◦:first 첫번째 선택요소
◦:last 마지막 선택요소
◦:even 짝수번째 요소들
◦:odd 홀수번째 요소들
◦:eq(n) 인덱스가 n인 요소
◦:lt(n) 인덱스가 n보다 작은 요소들
◦:gt(n) 인덱스가 n보다 큰 요소들

jQuery(':even'); => 문서내의 모든 짝수번째 요소들
jQuery('ul li').filter(':first'); => ul요소다음에 나오는 첫번째 li요소들

•현재 에니메이션 중인 요소 선택
jQuery('div:animated'); => 에니메이션 중인 div요소들

jQuery('div:not(div:animated)').animate({height:100}); => 에니메이션 중이 아닌 div요소들의 높이를 100까지 에니메이션

•텍스트나 요소를 포함하는 요소 선택

jQuery('span:contains("bob")'); => bob라는 문자열을 포함하는 span요소들

jQuery('div:has(p a)'); => p요소 하위에 a요소를 가진 div요소들

jQuery('p').filter(function() { return /(^|\s)(apple|orange|lemon)(\s|$)/.test(jQuery(this).text()); });

  => apple이나 orange나 lemon이라는 텍스트를 가진 p요소들

•일치되지 않는 요소 선택

jQuery('div:not(#content)'); => id가 content가 아닌 모든 div요소들

jQuery('a:not(div.important a, a.nav)'); => important클래스를 가진 div요소의 하위 a요소가 아니고 nav클래스를 가진 a요소가 아닌 a요소들

jQuery('a').click( function() { jQuery('a').not(this).addClass('not-clicked'); } ); => a요소를 클릭하면 모든 다른 a요소들에 not-clicked클래스 추가

$('#nav a').not('a.active'); => id가 nav인 요소의 하위 a요소들 중 active클래스를 가지지 않은 a요소들

•가시성 기반 요소 선택

jQuery('div:hidden'); => 눈에 보이지 않는 div요소들

•속성 기반 요소 선택

jQuery('a[href="http://google.com"]');=>href속성의 값이 http://google.com인 a요소들

jQuery('*[title][href]'); => title과 href 속성을 모두 가지는 요소들

jQuery('div[id^="content-sec-"]'); => id속성의 값이 content-sec-으로 시작하는 div요소들

•속성 셀렉터

◦[attr] 특정 속성을 가지고 있는 요소
◦[attr=val] 속성이 특정값을 가지는 요소
◦[attr!=val] 속성이 특정값을 가지지 않는 요소
◦[attr^=val] 속성이 특정값으로 시작하는 요소
◦[attr$=val] 속성이 특정값으로 끝나는 요소
◦[attr~=val] 공백과 함께 특정값을 포함하는 요소 (car는 car와 일치하지만 cart와는 불일치)
•폼요소 셀렉터

◦:text <input type="text" />
◦:password <input type="password" />
◦:radio <input type="radio" />
◦:checkbox <input type="checkbox" />
◦:submit <input type="submit" />
◦:image <input type="image" />
◦:reset <input type="reset" />
◦:button <input type="button" />
◦:file <input type="file" />
◦:hidden <input type="hidden" />
jQuery(':text'); => type속성의 값이 text인 모든 input요소들

jQuery(':input:not(:hidden)'); => 눈에 보여지는 모든 input요소들

jQuery(':text, :textarea'); => type속성의 값이 text이거나 textarea인 모든 input요소들

•특성을 갖는 요소 선택

jQuery('*').filter(function() { return !!jQuery(this).css('backgroundImage') });

=> 배경이미지를 갖는 모든 요소들

=> !!는 타입을 불린으로 변경하기 위함

=> jQuery함수의 인자인 this는 모든요소들(*) 중 filter에 인자로 전달되는 시점에 함수에 인자로 전달된 요소를 가리키는데

    요소를 jQuery함수의 인자로 넘겨 jQuery메소드를 사용할 수 있도록 함

jQuery('div').filter(function() { var width = jQuery(this).width(); return width>100&&width<200; });

=> 넓이가 100보다 크고 200보다 작은 모든 div요소들

•컨텍스트 매개변수

◦컨텍스트란 jQuery가 셀렉터 식에 의해 매치되는 요소를 찾을 장소
◦jQuery에 의해 사용되는 기본 컨텍스트는 DOM계층에서 최상위 항목인 document임. 즉, jQuery('p')는 jQuery('p', 'document')와 같다
jQuery('p', '#content'); => id가 content인 요소의 하위 p요소들 (이때 #content가 p의 컨텍스트) => jQuery('#content p');와 같다

jQuery('form').bind('submit', function() { var allInputs = jQuery('input', this); });

=> form요소들 중 submit이벤트가 일어나면 allinputs변수에 이벤트가 일어난 form의 모든 input요소들을 저장

[출처 네이버 블로그 - 달빛소년]

728x90

'프로그래밍 > 자바스크립트' 카테고리의 다른 글

quick menu 바  (0) 2013.07.19
javascript 브라우저 종류  (0) 2012.11.23
자주 쓰이는 JQuery Ajax 예제  (0) 2011.08.02
자바스크립트 실수 모음  (0) 2011.05.20
자바스크립트 팁  (0) 2011.05.20
728x90


Always With me

당신은 누군가와 함께 하기를 원합니까?
당신은 누군가와 친해지기를 원합니까?


당신은 누군가와 함께할 자신이 있습니까?
당신은 누군가와 친해질 자신이 있습니까?

그렇다면 그 누군가에게 마음을 열고
먼저 다가가세요.

그러면 친해지고 그렇게 되면
언제나 당신과 함께하는 그런 누군가가
될 수 있을꺼에요

고백 먼저 다가가세요...
두려워 할거 없어요...

삶은 이렇게 살아가는거에요~~

- 좋은 만남, 즐거운 삶을 기원하며...

728x90

'에세이' 카테고리의 다른 글

이별을 준비합니다.  (0) 2011.08.15
사랑은 놔주는 거야.  (0) 2011.08.08
초대장 가져가세요.(완료)  (4) 2011.07.30
어느 약속이 더 중요한가?  (0) 2011.07.29
하늘  (0) 2011.07.20

+ Recent posts