'분류 전체보기'에 해당하는 글 89건

new Date(sec).toISOString().replace(/T/, ' ').replace(/\..+/, '');

 

new Date(1599793620000).toISOString().replace(/T/, ' ').replace(/\..+/, '') 
"2020-09-11 03:07:00"

 

function getDateTime(sec){
offset = new Date().getTimezoneOffset() * 60000; //한국 9시간 차이남
return new Date(sec-offset).toISOString().replace(/T/, ' ').replace(/\..+/, '');
}

 

반대는 Date.parse("2020-09-11 03:07:00")

'js' 카테고리의 다른 글

숫자에 콤마 찍기  (0) 2018.08.30
엘리먼트 보이는지 안보이는지 확인(get visibility)  (0) 2018.01.18
한글 모음,자음,특수문자,공백 허용금지  (0) 2018.01.18
js 이미지파일 다운로드  (0) 2017.11.10
ajax 기본 틀  (0) 2017.11.10

WRITTEN BY
carbo

,

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

       <property name="webBindingInitializer">

           <bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>

       </property>

       <property name="messageConverters">

<list>

<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />

<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" >

    <property name = "supportedMediaTypes">

    <list>

        <value>*/*;charset=UTF-8</value>         

    </list>

</property>

</bean>

</list>

</property>

   </bean>​

'java' 카테고리의 다른 글

상대경로 가져오기  (0) 2018.06.04
보안취약점 PATH_TRAVERSAL  (0) 2018.05.18
JAVA 뒤로가기  (0) 2018.01.16
문자열 자르기  (0) 2017.04.20
MSSQL jdbcType javaType 매핑 정보  (0) 2017.04.13

WRITTEN BY
carbo

,

숫자에 콤마 찍기

js 2018. 8. 30. 15:41
function commaFormat(x){
	  return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

소수점 포함

function commaDotFormat(x){
	  var parts = x.toString().split(".");
	  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
	  return parts.join(".");
}



WRITTEN BY
carbo

,

상대경로 가져오기

java 2018. 6. 4. 14:37

현재 클래스의 절대 경로를 가져와서 수정하자.


String path = Configuration.class.getResource("").getPath(); // 현재 클래스의 절대 경로를 가져온다.


Configuration은 클래스 이름

'java' 카테고리의 다른 글

jackson library 사용을 위한 dispatcher 필요 추가 항목  (0) 2020.06.25
보안취약점 PATH_TRAVERSAL  (0) 2018.05.18
JAVA 뒤로가기  (0) 2018.01.16
문자열 자르기  (0) 2017.04.20
MSSQL jdbcType javaType 매핑 정보  (0) 2017.04.13

WRITTEN BY
carbo

,

PATH_TRAVERSAL 해결방안이 엉터리로 나와서 적어둠


if(name!=null && !"".equals(name)){ 

    name = name.replaceAll("/",""); 

    name = name.replaceAll("\\\\",""); 

    name = name.replaceAll("[.]","");  

    name = name.replaceAll("[&]","");  

}

'java' 카테고리의 다른 글

jackson library 사용을 위한 dispatcher 필요 추가 항목  (0) 2020.06.25
상대경로 가져오기  (0) 2018.06.04
JAVA 뒤로가기  (0) 2018.01.16
문자열 자르기  (0) 2017.04.20
MSSQL jdbcType javaType 매핑 정보  (0) 2017.04.13

WRITTEN BY
carbo

,
$(element).is(":visible"); 


'js' 카테고리의 다른 글

Epoch sec를 yyyy-mm-dd hh:mm:ss로 변경  (0) 2020.10.26
숫자에 콤마 찍기  (0) 2018.08.30
한글 모음,자음,특수문자,공백 허용금지  (0) 2018.01.18
js 이미지파일 다운로드  (0) 2017.11.10
ajax 기본 틀  (0) 2017.11.10

WRITTEN BY
carbo

,


var blank_pattern = /^[가-힣a-zA-Z0-9]+$/;

if(blank_pattern.test($("#text_input").val()) == false){

alert("모음, 자음, 특수문자, 공백을 사용 하실수 없습니다.");

$("#text_input").focus();

return;

  }

'js' 카테고리의 다른 글

숫자에 콤마 찍기  (0) 2018.08.30
엘리먼트 보이는지 안보이는지 확인(get visibility)  (0) 2018.01.18
js 이미지파일 다운로드  (0) 2017.11.10
ajax 기본 틀  (0) 2017.11.10
input 선택된 값 가져오기  (0) 2017.11.07

WRITTEN BY
carbo

,

JAVA 뒤로가기

java 2018. 1. 16. 13:51

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


response.sendRedirect(request.getHeader("referer"));

'java' 카테고리의 다른 글

상대경로 가져오기  (0) 2018.06.04
보안취약점 PATH_TRAVERSAL  (0) 2018.05.18
문자열 자르기  (0) 2017.04.20
MSSQL jdbcType javaType 매핑 정보  (0) 2017.04.13
session의 모든 정보 가져오기  (0) 2016.11.14

WRITTEN BY
carbo

,

js 이미지파일 다운로드

js 2017. 11. 10. 14:44
var a = $("<a>")
    .attr("href", "http://i.stack.imgur.com/L8rHf.png")
    .attr("download", "img.png")
    .appendTo("body");

a[0].click();

a.remove();



WRITTEN BY
carbo

,

ajax 기본 틀

js 2017. 11. 10. 10:48

$.ajax({

url : "/maintenance/obs/getMgtSensorDetail.do"

,data : {

"data" : data

}

,method : "POST"

,dataType : "JSON"

,success : function(data){

console.log(data);

}

, error : function(jqXHR, textStatus, errorThrown){

console.log(jqXHR, textStatus, errorThrown);

}

});


WRITTEN BY
carbo

,

console.log($(':radio[name="pay_day"]:checked').val()); //라디오

   console.log($("#goods_name").val()); //텍스트

   console.log($("#goods_name>option:selected").html()); //셀렉트 박스 선택된 텍스트

   console.log($("#email").prop('checked')); //체크

'js' 카테고리의 다른 글

js 이미지파일 다운로드  (0) 2017.11.10
ajax 기본 틀  (0) 2017.11.10
selectbox text 값으로 select 하기  (0) 2017.10.26
마우스 클릭 이벤트 (자동클릭)  (0) 2017.05.11
jquery selector  (0) 2017.05.01

WRITTEN BY
carbo

,

Example

<select id="fruit">
    <option value="">--select--</option>
    <option value="1">apple</option>
    <option value="2">pineapple</option>
    <option value="3">orange</option>
<select>
<br>
<button>apple</button>
<button>orange</button>
<button>pineapple</button>

$(function() {
    $("button").click(function() {
        $("#fruit option:contains('" + $(this).text() + "')").attr("selected", true);
    })
})


'js' 카테고리의 다른 글

ajax 기본 틀  (0) 2017.11.10
input 선택된 값 가져오기  (0) 2017.11.07
마우스 클릭 이벤트 (자동클릭)  (0) 2017.05.11
jquery selector  (0) 2017.05.01
url에 한글 주소 포함시킬 때  (0) 2017.04.11

WRITTEN BY
carbo

,


NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:labelText];
NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
[textStorage addLayoutManager:layoutManager];
CGRect bounds = label.bounds;
NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:bounds.size];
[layoutManager addTextContainer:textContainer];

Now you just need to find the index of the character that was clicked, which is simple!

NSUInteger characterIndex = [layoutManager characterIndexForPoint:location
                                                  inTextContainer:textContainer
                         fractionOfDistanceBetweenInsertionPoints:NULL];

Which makes it trivial to find the word itself:

if (characterIndex < textStorage.length) {
  [labelText.string enumerateSubstringsInRange:NSMakeRange(0, textStorage.length)
                                       options:NSStringEnumerationByWords
                                    usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                      if (NSLocationInRange(characterIndex, enclosingRange)) {
                                        // Do your thing with the word, at range 'enclosingRange'
                                        *stop = YES;
                                      }
                                    }];
}



다른 방법


1) Subclass UILabel, and add a touchesEnded: to recognize touches on your label.
2) Store in an array all the sizes of the letters using system method sizeWithFont:
3) Get the touch point and compare with the letters size.
Done!

Create an UILabel subclass
//
// APLabel.h
//
#import <uikit /UIKit.h>

@protocol APLabelDelegate <nsobject>
@required
  - (void) didLetterFound:(char)letter;
@end

@interface APLabel : UILabel

@property (nonatomic, assign) id <aplabeldelegate> delegate;

@end

//
// APLabel.m
//
#import "APLabel.h"

@implementation APLabel

- (id)initWithCoder:(NSCoder *)aDecoder
{
  if ( self = [super initWithCoder:aDecoder])
  {
    self.backgroundColor          = [UIColor greenColor];
    self.userInteractionEnabled   = YES;
  }
  return self;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
  UITouch *touch = [[touches allObjects] objectAtIndex:0];
  CGPoint pos    = [touch locationInView:self];

  int sizes[self.text.length];
  for ( int i=0; i<self .text.length; i++ )
  {
    char letter         = [self.text characterAtIndex:i];
    NSString *letterStr = [NSString stringWithFormat:@"%c", letter];
    
    CGSize letterSize   = [letterStr sizeWithFont:self.font];
    sizes[i]            = letterSize.width;
  }

  int sum = 0;
  for ( int i=0; i<self.text.length; i++)
  {
    sum += sizes[i];
    if ( sum >= pos.x )
    {
      [ _delegate didLetterFound:[ self.text characterAtIndex:i] ];
      return;
    }
  }
}
@end


'ios' 카테고리의 다른 글

json dictionary로 가져오기  (0) 2017.01.20
일정 시간 지연후 실행  (0) 2016.12.19
ios info.plist 권한수정  (0) 2016.12.01

WRITTEN BY
carbo

,
ScrollView scroll = (ScrollView) findViewById(R.id.scrollView);
scroll.fullScroll(ScrollView.FOCUS_DOWN);


'android' 카테고리의 다른 글

텍스트 뷰에서 터치시 터치된 단어  (0) 2017.06.28
어플 재시작  (0) 2017.06.27
뒤로 가기 종료  (0) 2017.06.20
이미지뷰 어두워 지는 효과  (0) 2017.06.19
리사이클러뷰 아이템 접근  (0) 2017.06.16

WRITTEN BY
carbo

,
aboutTextView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                mOffset = aboutTextView.getOffsetForPosition(motionEvent.getX(), motionEvent.getY());
              //  mTxtOffset.setText("" + mOffset);
                Toast.makeText(HomeScreen.this, findWordForRightHanded(aboutTextView.getText().toString(), mOffset), Toast.LENGTH_SHORT).show();

            }
            return false;
        }
    });



private String findWordForRightHanded(String str, int offset) { // when you touch ' ', this method returns left word.
    if (str.length() == offset) {
        offset--; // without this code, you will get exception when touching end of the text
    }

    if (str.charAt(offset) == ' ') {
        offset--;
    }
    int startIndex = offset;
    int endIndex = offset;

    try {
        while (str.charAt(startIndex) != ' ' && str.charAt(startIndex) != '\n') {
            startIndex--;
        }
    } catch (StringIndexOutOfBoundsException e) {
        startIndex = 0;
    }

    try {
        while (str.charAt(endIndex) != ' ' && str.charAt(endIndex) != '\n') {
            endIndex++;
        }
    } catch (StringIndexOutOfBoundsException e) {
        endIndex = str.length();
    }

    // without this code, you will get 'here!' instead of 'here'
    // if you use only english, just check whether this is alphabet,
    // but 'I' use korean, so i use below algorithm to get clean word.
    char last = str.charAt(endIndex - 1);
    if (last == ',' || last == '.' ||
            last == '!' || last == '?' ||
            last == ':' || last == ';') {
        endIndex--;
    }

    return str.substring(startIndex, endIndex);
}


'android' 카테고리의 다른 글

스크롤뷰 스크롤 바닥으로 내리기  (0) 2017.06.28
어플 재시작  (0) 2017.06.27
뒤로 가기 종료  (0) 2017.06.20
이미지뷰 어두워 지는 효과  (0) 2017.06.19
리사이클러뷰 아이템 접근  (0) 2017.06.16

WRITTEN BY
carbo

,

어플 재시작

android 2017. 6. 27. 14:12

AlarmManager mgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);

            PendingIntent restartIntent = PendingIntent.getActivity(

                    mContext, 0, new Intent(mContext.getIntent()),

                    PendingIntent.FLAG_CANCEL_CURRENT);

            mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent);

            System.exit(2);

'android' 카테고리의 다른 글

스크롤뷰 스크롤 바닥으로 내리기  (0) 2017.06.28
텍스트 뷰에서 터치시 터치된 단어  (0) 2017.06.28
뒤로 가기 종료  (0) 2017.06.20
이미지뷰 어두워 지는 효과  (0) 2017.06.19
리사이클러뷰 아이템 접근  (0) 2017.06.16

WRITTEN BY
carbo

,

뒤로 가기 종료

android 2017. 6. 20. 16:46

import android.app.Activity;
import android.widget.Toast;

public class BackPressCloseHandler {

private long backKeyPressedTime = 0;
private Toast toast;

private Activity activity;

public BackPressCloseHandler(Activity context) {
this.activity = context;
}

public void onBackPressed() {
if(System.currentTimeMillis() > backKeyPressedTime + 3000) {
backKeyPressedTime = System.currentTimeMillis();
showGuide();
return;
}
if(System.currentTimeMillis() <= backKeyPressedTime + 3000) {
activity.finishAffinity();
activity.finish();
android.os.Process.killProcess(android.os.Process.myPid());
toast.cancel();
}
}

private void showGuide() {
toast = Toast.makeText(activity,"뒤로가기 버튼을 한 번 더 누르시면 종료됩니다", Toast.LENGTH_SHORT);
toast.show();
}
}


'android' 카테고리의 다른 글

텍스트 뷰에서 터치시 터치된 단어  (0) 2017.06.28
어플 재시작  (0) 2017.06.27
이미지뷰 어두워 지는 효과  (0) 2017.06.19
리사이클러뷰 아이템 접근  (0) 2017.06.16
버튼 자동 클릭  (0) 2017.06.16

WRITTEN BY
carbo

,

imageView.setColorFilter(Color.parseColor("#BDBDBD"), PorterDuff.Mode.MULTIPLY);

'android' 카테고리의 다른 글

어플 재시작  (0) 2017.06.27
뒤로 가기 종료  (0) 2017.06.20
리사이클러뷰 아이템 접근  (0) 2017.06.16
버튼 자동 클릭  (0) 2017.06.16
FrameLayout의 layout_gravity 설정  (0) 2017.06.01

WRITTEN BY
carbo

,
ViewGroup item = (ViewGroup) recyclerView.getLayoutManager().findViewByPosition(selected_position);


'android' 카테고리의 다른 글

뒤로 가기 종료  (0) 2017.06.20
이미지뷰 어두워 지는 효과  (0) 2017.06.19
버튼 자동 클릭  (0) 2017.06.16
FrameLayout의 layout_gravity 설정  (0) 2017.06.01
키보드 가리기  (0) 2017.06.01

WRITTEN BY
carbo

,

버튼 자동 클릭

android 2017. 6. 16. 10:12
button.performClick();


'android' 카테고리의 다른 글

이미지뷰 어두워 지는 효과  (0) 2017.06.19
리사이클러뷰 아이템 접근  (0) 2017.06.16
FrameLayout의 layout_gravity 설정  (0) 2017.06.01
키보드 가리기  (0) 2017.06.01
함수 끝나고 다른 함수 실행  (0) 2017.06.01

WRITTEN BY
carbo

,

The layout_gravity attribute lands on the FrameLayout.LayoutParams, not on the view itself. You'll need something like:

mCameraPreview = new CameraPreview(this, recordMode);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview_wrapper);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
    FrameLayout.LayoutParams.WRAP_CONTENT, 
FrameLayout.LayoutParams.WRAP_CONTENT,
Gravity.BOTTOM); preview.addView(mCameraPreview, params);


'android' 카테고리의 다른 글

리사이클러뷰 아이템 접근  (0) 2017.06.16
버튼 자동 클릭  (0) 2017.06.16
키보드 가리기  (0) 2017.06.01
함수 끝나고 다른 함수 실행  (0) 2017.06.01
안드로이드 화면 사이즈 구하기  (0) 2017.03.20

WRITTEN BY
carbo

,

키보드 가리기

android 2017. 6. 1. 15:56

private void init(){

    imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

    search = (EditText) findViewById(R.id.search_edittext);

}

 

//키보드를 가림.

private void hideKeyboard(){

    imm.hideSoftInputFromWindow(search.getWindowToken(), 0);

}


//키보드를 보여줌.

private void showKeyboard(){

    imm.showSoftInput(searchTxt, 0);

}




//////////////////////////

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(search.getWindowToken(), 0);


'android' 카테고리의 다른 글

버튼 자동 클릭  (0) 2017.06.16
FrameLayout의 layout_gravity 설정  (0) 2017.06.01
함수 끝나고 다른 함수 실행  (0) 2017.06.01
안드로이드 화면 사이즈 구하기  (0) 2017.03.20
Custom SimpleAdapter  (0) 2017.02.22

WRITTEN BY
carbo

,


안드로이드 코딩하다보면 1초후에 동작 같은 기능이 필요할때가 있다.

이럴경우 handle을 사용하면 된다.


단순히 1초후에 실행하고, 실행이 끝난후 확인하는 기능


	new Handler().postDelayed(new Runnable() {// 1 초 후에 실행
		@Override
		public void run() {
			// 실행할 동작 코딩

			mHandler.sendEmptyMessage(0);	// 실행이 끝난후 알림
		}
	}, 1000);	



	Handler mHandler = new Handler() {
		public void handleMessage(Message msg) {  // 실행이 끝난후 확인 가능
			
		}
	};	


3초후에 실행

private Handler mHandler = new Handler();
mHandler.postDelayed(mMyTask, 3000); // 3초후에 실행

private Runnable mMyTask = new Runnable() {
	@Override
	public void run() {
		// 실제 동작
	}
};


0.5초 후에 실행하고 실행시 메시지를 전달하며, 실행후 받은 메시지에 따라 처리하는 기능

	new Handler().postDelayed(new Runnable() {// 0.5 초 후에 실행
		@Override
		public void run() {
			// 실행할 동작 코딩
			Message msg1 = mHandler.obtainMessage();  //사용할 핸들러를 이용해서 보낼 메시지 객체 생성
			Bundle b1 = new Bundle();	//메시지를 담을 번들 생성
			b1.putBoolean("END_AUTH", true);	//번들에 메시지 추가
			msg1.setData(b1);	//메세지에 번들을 넣는다.
			mHandler.sendMessage(msg1); 	//메세지를 핸들러로 넘긴다.
		}
	}, 500);	


	Handler mHandler = new Handler() {
		public void handleMessage(Message msg) {  // 실행이 끝난후 확인 가능
        		Bundle bd = msg.getData();
        		if(bd.getBoolean("END_AUTH")){
        			// 메시지를 받고 처리할 부분

        		}
			
		}
	};	


참고1.. Thread를 이용한 바로 처리하는 방법


new Thread(new Runnable() { @Override public void run() { // 로직처리 handler.sendEmptyMessage(0); } }).start(); Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // UI처리 } };


참고2.. Timer를 이용한 처리방법

new Timer().schedule(new TimerTask() {
    public void run() {
        // UI 및 로직
    }
}, 1000); // 1초후 실행


참고3. Async Task를 이용한 바로 처리 방법


new AsyncTask() {
    @Override
    protected void onPreExecute() {
        // UI 처리
        super.onPreExecute();
    }

    @Override
    protected Boolean doInBackground(String... params) {
        // 로직 처리
        return true;
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        // UI 처리
    }

    @Override
    protected void onPostExecute(Boolean result) {
        // UI 처리
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();
    }
}.execute();



출처: http://androi.tistory.com/57 [안드로이 스토리]

'android' 카테고리의 다른 글

FrameLayout의 layout_gravity 설정  (0) 2017.06.01
키보드 가리기  (0) 2017.06.01
안드로이드 화면 사이즈 구하기  (0) 2017.03.20
Custom SimpleAdapter  (0) 2017.02.22
인텐트 전환효과 없애기  (0) 2017.02.20

WRITTEN BY
carbo

,

$('#selector').trigger('click'); //자동 클릭 (댓글 펼치기)

'js' 카테고리의 다른 글

input 선택된 값 가져오기  (0) 2017.11.07
selectbox text 값으로 select 하기  (0) 2017.10.26
jquery selector  (0) 2017.05.01
url에 한글 주소 포함시킬 때  (0) 2017.04.11
jqueuy id로 검색  (0) 2017.04.10

WRITTEN BY
carbo

,

jquery selector

js 2017. 5. 1. 16:50

기본 셀렉터
일반적인 CSS 셀렉터를 그대로 이용할 수 있다. 태그명을 기준으로 선택하거나 id, class 명으로 선택한다.

$('태그명') : HTML 문서에서 해당 태그를 모두 선택
$('#id') : HTML 문서에서 해당 id가 지정된 element 선택
$('.class명') : HTML 문서에서 해당 class가 지정된 모든 element 선택

- HTML
<p>Paragraph Element</p>  
<div id="divID">Division Element</div>    
<div class="className">Division Element</div>

- Script
$(function(){
     var element = $('p'); alert(element.html());                
     element = $('#divID')alert(element.html());        
     element = $('.className')alert(element.html());
}); 



순서 기반 셀렉터
기본 셀렉터 외에 jQuery에서 추가로 정의한 커스텀 셀렉터를 이용하면 복수의 elements에서 지정한 순서에 해당하는 element(s)를 선택할 수 있다.

$('선택자:even') 
선택자로 선택된 모든 elements 중 짝수 번째 elements를 선택한다. 셀렉터를 생략할 경우 문서 전체가 대상이다. 대부분의 프로그램이 그러하듯 순서 인덱스 번호는 0부터 시작한다.

$('선택자:odd')
선택자로 선택된 모든 elements 중 홀수 번째 elements를 선택한다.

$('선택자:eq(인덱스)')
선택자로 선택된 모든 elements 중 해당 인덱스 번째 element를 선택한다.

$('선택자:first') , $('선택자:last')
선택자로 선택된 elements 중 첫 번째(first)와 마지막(last) element를 선택한다

$('선택자:lt(인덱스)') , $('선택자:gt(인덱스)')
선택자로 선택된 elements 중 인덱스 보다 작거나(lt) 큰(gt) elements를 선택한다.
lt 는 부등호 기호 '<' , gt는 '>' 로 해석하면 이해할만 하다


- HTML
<p>Paragraph Element 0</p> 
<p>Paragraph Element 1</p>
<p>Paragraph Element 2</p>
<p>Paragraph Element 3</p>


- Script
$(function(){
     var elements = $('p:odd');
     elements.each(function(){ alert($(this).html())});        
        
     elements = $('p:even');
     elements.each(function(){ alert($(this).html())});        
        
     elements = $('p:eq(3)'); alert(elements.html())

      elements = $('p:first'); alert(elements.html());      
      elements = $('p:last'); alert(elements.html());
      
      elements = $('p:gt(1)');
      elements.each(function(){ alert($(this).html())});  
      
      elements = $('p:lt(2)')
      elements.each(function(){ alert($(this).html())});
});



관계 기반 셀렉터
부모/자식과 같은 DOM 관계를 기준으로 element(s)를 선택할 수 있다. 대표적인 관계가 DOM Tree 구조상의 부모/자식 관계이다.

$('선택자').children() : 선택자로 선택된 element의 바로 아래(한 단계 아래의) 자식 elements를 선택한다.
$('선택자').parent() : 선택자로 선택된 element의 바로 위(한 단계 위의) 부모 element를 선택한다.

$('선택자').next() , $('선택자').nextAll()
선택자로 선택된 element의 바로 다음 1개(next) 또는 전체(nextAll) 요소를 선택한다.

$('선택자').prev() , $('선택자').prevAll()
선택자로 선택된 element의 바로 전 1개(prev) 또는 전체(prevAll) 요소를 선택한다.

이와 같은 jQuery 메서드를 '트리 순환 메서드'라 부른다

- HTML
<div id="root">
   <p>Paragraph Element</p>
   <div id="1deptCh">Division Element <div id="2deptCh">Sub Division Element</div></div>
 </div>

- Script
$(function(){
     var elements = $('#root').children();
     elements.each(function(){ alert($(this).html())});  
        
     elements = $('#2deptCh').parent();
     alert(elements.html());        
});



조건 기반 셀렉터
특정 내용이 포함된 element, 특정 규칙에 맞는 element 즉 조건에 의해 선택하는 방법을 안내한다. 따지고 보면 모든 셀렉터가 조건 기반 셀렉터이다. 다만 단락 구분과 실제 규칙을 명시하는 범주를 여기서 다룬다.

$('선택자').filter('조건선택자')
앞의 '선택자'에 의해 선택된 elements에서 '조건선택자'에 해당하는 element(s)만 다시 선택한다. 아래 코드는 모든 <p> element에서 class명이 'filterName'인 <p> element를 걸러내는 코드다.

- HTML
<p class="filterName">Paragraph Element 0</p>
<p>Paragraph Element 1</p>
<p class="filterName">Paragraph Element 2</p>
<p>Paragraph Element 3</p>

- Script
$(function(){
     var elements = $('p').filter('.filterName');
     elements.each(function(){ alert($(this).html())});                    
})



$('선택자').find('조건선택자')
앞의 '선택자'에 의해 선택된 elements의 자식을 대상으로 '조건 선택자'에 해당하는 element를 선택한다. 이때 자식 element의 단계(Dept)는 제약이 없다. 아래 코드는 모든 <div> element의 자식들 중 <span> element를 다시 선택하는 코드다.

- HTML
<div>Division Element 0</div>
<div>Division Element 1<span> Span Element 1</span></div>    
<div>Division Element 2<span> Span Element 2</span></div> 

- Script
$(function(){
     var elements = $('div').find('span');
     elements.each(function(){ alert($(this).html())});                    
});



filter() vs find()
여러 곳에서 언급하고 있지만 이 둘은 짐짓 헷갈리 수 있다. 이를 헷갈리지 않으려면 조건이 적용되는 대상 즉 검색 대상이 다르다는 걸 알면 된다.

filter() : 현재 선택된 집합을 대상으로 검색함
find() : 현재 선택된 집합의 자식 요소를 대상으로 검색함

filter()는 '선택자'로 선택된 요소를 대상으로 검색하는 반면, find()는 '선택자'로 선택된 요소의 자식 요소를 대상으로 검색하는 것이다. 다음 코드를 보자. 

- HTML
<div class="tempClass">Division Element 0</div>
<div>Division Element 1<span class="tempClass"> Span Element 1-1</span></div>    
<div class="tempClass">Division Element 2<span> Span Element 2-1</span></div>

- Script
$(function(){                
     elements = $('div').filter('.tempClass');
     elements.each(function(){ alert('filter() :' + $(this).html())});                  
        
     var elements = $('div').find('.tempClass');
     elements.each(function(){ alert('find() :' + $(this).html())});  
});


두 경우 모두 처음에는 모든 <div>를 선택하고, 이후 filter와 find를 같은 조건(class 명이 'tempClass' 인 것)으로 검색한다. 결과는 다음과 같다.

- filter()로 검색한 결과: 첫 번째와 세 번째 <div> 요소 반환
- find()로 검색한 결과: 두 번째 요소의 자식 요소인 <span> 요소 반환

이것 하나만 기억하자! find()는 자식을 기준으로 검색한다는 것!

$('선택자:contains("searchText")')
앞의 '선택자'에 의해 선택된 element(s)의 콘텐트에서 "searchText"가 포함된 element만을 다시 선택한다.
다음 코드는 모든 <div>요소의 내용에서 'mkex'가 포함된 요소만을 선택하는 코드이다. 참고로 contains로 내용을 검색할 때, 대/소문자를 구분하는 것에 주의하자

- HTML
<div>Hi, mkex!</div>
<div>Hi, ohkebi</div>
<div>Hi, MKEX</div>

- Script
$(function(){                
     var elements = $('div:contains("mkex")');
     elements.each(function(){ alert($(this).text())});                    
});



$('선택자:not(조건선택자)')
앞의 '선택자'에서 선택된 모든 elements에서 '조건선택자'에 해당하는 요소를 제거한다.

- HTML
<div class="divClass">Hi, mkex!</div>
<div>Hi, ohkebi</div>
<div class="divClass">Hi, MKEX</div>

- Script
$(function(){                
   var elements = $('div:not(.divClass)');
   elements.each(function(){ alert($(this).text())});                    
});    


참고로 not 조건에 셀렉터를 중첩해서 사용 가능하다. 다음과 같이...
$('div:not(.divClass , #divID)');

위 코드는 모든 <div> 요소에서 class로 'divClass'가 지정되거나 id로 'divID'로 지정된 요소를 제거한다. 
즉 조건식을 or 조합으로 만들 수 있다.


선택자 중첩
지금까지는 하나의 선택자만을 지정했는데 더 자세한 탐색을 위해 선택자를 중첩해서 지정할 수 있다.
기본 셀렉터를 사용해서 선택자를 중첩시켜 보겠다.

$('선택자 선택자 선택자 ...')
총 3개의 선택자를 지정한다. 셀렉터를 중첩해도 동일한 효과를 줄 수 있지만 여기서는 선택자를 중첩 지정하여 탐색의 깊이를 점점 좁혀가고 있다.

예를 하나 보자. 다음 코드는 ID가 'divID'인 요소 안에 있는 <span> 내의 모든 <a> 요소를 반환하는 코드다.

- HTML
<div id="divID"><span><a href="#">Go!!</a></span></div>

- Script
$(function(){                
     var element = $('#divID span a');
     alert(element.text());       
});


'js' 카테고리의 다른 글

selectbox text 값으로 select 하기  (0) 2017.10.26
마우스 클릭 이벤트 (자동클릭)  (0) 2017.05.11
url에 한글 주소 포함시킬 때  (0) 2017.04.11
jqueuy id로 검색  (0) 2017.04.10
jquery  (0) 2017.01.25

WRITTEN BY
carbo

,

 

[ 한반도 실시간 미세먼지 현황 위성화면 ]



'잡동사니' 카테고리의 다른 글

N-650_BLS 설명서  (0) 2016.04.06

WRITTEN BY
carbo

,

문자열 자르기

java 2017. 4. 20. 10:15

http://all-record.tistory.com/118

'java' 카테고리의 다른 글

보안취약점 PATH_TRAVERSAL  (0) 2018.05.18
JAVA 뒤로가기  (0) 2018.01.16
MSSQL jdbcType javaType 매핑 정보  (0) 2017.04.13
session의 모든 정보 가져오기  (0) 2016.11.14
java 메일 한글 깨짐  (0) 2016.11.03

WRITTEN BY
carbo

,
SQL Server 형식JDBC 형식(java.sql.Types)Java 언어 형식
bigintBIGINTlong
binaryBINARYbyte[]
bitBITboolean
charCHARString
dateDATEjava.sql.Date
datetimeTIMESTAMPjava.sql.Timestamp
datetime2TIMESTAMPjava.sql.Timestamp
datetimeoffset(2)microsoft.sql.Types.DATETIMEOFFSETmicrosoft.sql.DateTimeOffset
decimalDECIMALjava.math.BigDecimal
floatDOUBLEdouble
imageLONGVARBINARYbyte[]
intINTEGERint
moneyDECIMALjava.math.BigDecimal
ncharCHAR

NCHAR(Java SE 6.0)
String
ntextLONGVARCHAR

LONGNVARCHAR(Java SE 6.0)
String
numericNUMERICjava.math.BigDecimal
nvarcharVARCHAR

NVARCHAR(Java SE 6.0)
String
nvarchar(max)VARCHAR

NVARCHAR(Java SE 6.0)
String
realREALfloat
smalldatetimeTIMESTAMPjava.sql.Timestamp
smallintSMALLINTshort
smallmoneyDECIMALjava.math.BigDecimal
textLONGVARCHARString
timeTIME(1)java.sql.Time(1)
timestampBINARYbyte[]
tinyintTINYINTshort
udtVARBINARYbyte[]
uniqueidentifierCHARString
varbinaryVARBINARYbyte[]
varbinary(max)VARBINARYbyte[]
   
varcharVARCHARString
varchar(max)VARCHARString
xmlLONGVARCHAR

LONGNVARCHAR(Java SE 6.0)
String

SQLXML


'java' 카테고리의 다른 글

보안취약점 PATH_TRAVERSAL  (0) 2018.05.18
JAVA 뒤로가기  (0) 2018.01.16
문자열 자르기  (0) 2017.04.20
session의 모든 정보 가져오기  (0) 2016.11.14
java 메일 한글 깨짐  (0) 2016.11.03

WRITTEN BY
carbo

,

window.location.hash='#search/'+encodeURIComponent(keyword);

'js' 카테고리의 다른 글

마우스 클릭 이벤트 (자동클릭)  (0) 2017.05.11
jquery selector  (0) 2017.05.01
jqueuy id로 검색  (0) 2017.04.10
jquery  (0) 2017.01.25
특수문자 삭제 정규표현식  (0) 2016.10.10

WRITTEN BY
carbo

,

jqueuy id로 검색

js 2017. 4. 10. 17:39
//id가 testid로 시작하는 엘리먼트들 접근
 $("[id^='testid']")
 
 //id가 testid로 끝나는 엘리먼트들 접근 
 $("[id$='testid']")




'js' 카테고리의 다른 글

마우스 클릭 이벤트 (자동클릭)  (0) 2017.05.11
jquery selector  (0) 2017.05.01
url에 한글 주소 포함시킬 때  (0) 2017.04.11
jquery  (0) 2017.01.25
특수문자 삭제 정규표현식  (0) 2016.10.10

WRITTEN BY
carbo

,