2012-04-17 3 views
26

$ (this) 선택기에서 img를 "선택"하려고합니다. .find('img')을 사용하여 찾을 수 있다는 것을 알고 있지만 가능합니다 :

$("img",this)?

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 완벽한 합리적 방법의 그 일을 그건 원래 코드

<a class="picture" href="test.html"> 
    <img src="picture.jpg" alt="awesome"> 
</a> 
+0

두 가지 방법이 동일하게 작동합니다. 두 가지 중 어느 것을 "최적"이라고 부르는 것이 중요하다고 생각하지 않습니다. 그들이 조금 빠른 상황보다는()는 같은,하지만 .find, http://jsperf.com/jqslctrtst – Jon

+1

은 BTW, 당신은 항상 과학을 사용할 수 있습니다. http://jsperf.com/jquery-context-find-and-children-selectors/6 http://jsperf.com/jquery-find-vs-context-2/2 –

+0

진정한 : – rucsi

답변

55

이 작업을 수행 할 수있는 가장 최적의 방법은 무엇입니까?

$(this).find('img')$('img', this)은 모두 동일합니다. 워드 프로세서

:

내부적 선택기 컨텍스트 (이 '범위')를 .find() 메소드 너무 $ 구현 $ (이) .find ('범위에 해당되고 ').

http://api.jquery.com/jQuery/

4

.

그래서 당신이 할 것 같은 :

$('a').click(function() { 
    //if the element dosent change you can use this 
    //var src = $('img', this).attr('src'); 
    //else use $(this) 
    var src = $('img', $(this)).attr('src'); 
    alert(src); 
    return false; 
}); 

참조 : http://jsfiddle.net/xYmwV/

두 가지 방법으로 당신이 DOM 요소를로드하고 검색하기 때문에 정말 차이가 없다. 귀하의 방법을 "청소기"간단하지만, 더 혼란스러워 할 수도 있습니다 :)

더 빠른 방법은 $(this).children() 이후 would'nt 이후 요소를 검색 할 수 있지만 DOM에서 직접 downwords갑니다. 그러나 그것은 스크립트의 유연성을 필요로합니다.

+0

은 때때로 당신은'$를 추가해야 (this)'대신'this '를 사용하지만 기본적으로 그렇게하는 방법입니다. 1 : – Phoenix

+0

@Phoenix 참으로 그것은 당신이 그것을 검색 할 때 요소를 호출하는 의미가 있습니다. 일반적으로 전화를 걸 필요가없는 이유를 절대로 이해하지 못합니까? : 당신이/DOM을 밖으로 이동하는 경우/ –

+0

가 될 것으로 보인다'this' 어디'$로 변경 될 수 있습니다 ('이') '하지 않습니다. http://remysharp.com/2007/04/12/jquerys-this-demystified/ –

0

가 나는 $ (이) 선택 내부 IMG를 "선택"하는 것을 시도하고있다.

var myImg = $(this).find("img"); 
2

예 어쨌든 그들은 동등한 것 ... 그렇게 할 수 있습니다, 그래서 당신의 '구문의 취향'의 문제이다 :

내부적으로 선택 컨텍스트가 구현된다 .find() 메소드 $ ('span', this)는 $ (this) .find ('span')와 동일합니다.

http://api.jquery.com/jQuery/

1

그것은 정말 문제가, 당신이 선호하는 중 선택하지 않습니다, 그것은 주로 문체 선택입니다.이론적으로 find 형태가 약간 그래서

jQuery를이 내부적으로 $(context).find(selector) 또는 (context이 jQuery를 인스턴스가 이미 켜져있는 경우) context.find(selector)을 수행하여 양식 $(selector, context)을 처리보다 효율적으로하지만, 정말 가능성이 높습니다 어떤 식 으로든 신경 쓰다.

관련 문제