2011-10-05 3 views
2

가 작동하려면이 코드를 얻기 위해 노력하는 정의되지하지만 난 불을 지르고에서 점점 오전 오류가 $this is not defined하고JQuery와 -이는

이 코드에 대한 배경을 설명하기 위해 왜 난의 목록을 이해하지 못하는 $ 동일한 클래스가 있으므로 특정 스팬을 클릭하면 해당 스팬을 업데이트하고 아약스 요청을 보내야합니다.

희망적으로는 의미가 있습니다.

$(document).ready(function() { 

function postAndFade($node, post_key) { 
    var id = $node.parents('.id').find('.id-value').text(); 
    var post_val = $node.text(); 
    $node.fadeOut('slow'); 

    $.ajax({ 
     type: "POST", 
     url: "process.php", 
     data: "id="+id+"&"+post_key+"="+post_val, 
     success: function(data) { 
      $node.html(data); 
      $node.fadeIn('slow');   
     } 
    }); 
return false; 
} 
$('.featured-value').click(function() { return postAndFade($this, 'featured'); }); 
$('.visible-value').click(function() { return postAndFade($this, 'visible'); }); 
}); 
+1

의 (이) $를 사용하는,하지만 정말 뭔가 '$이'라고해야합니까? 아마도 '이'또는 '$ (이)'를 의미할까요? –

+1

이것이 오류의 원인이되는 코드 블록입니까? – kand

답변

13

왜냐하면 - $(this)을 찾고 있기 때문입니다.

풀러 설명 - jQuery는 this 값을 이벤트를 트리거하는 요소로 설정하여 이벤트 처리기의 컨텍스트를 설정합니다. 이것을 jQuery에서 참조하려면 jQuery 호출로 포장해야합니다 (예 : $(this)).

$(el).click(function() { 
    var $this = $(this); 
    // now do stuff with $this 
}); 

을하지만 그 대회, jQuery를 당신을 위해하지 않습니다 뭔가 : 당신이 자주 요소와 물건을 많이 할 필요가 있기 때문에, $this라는 변수에 할당하는 일반적인 코딩 패턴입니다.

+1

aaaaaaaaaaaah. 고맙습니다. 또 다른 고통스러운 교훈이 배웠습니다. – martincarlin87

3

사용이 코드 당신은 $(this)하지 $this 원하는

$(this) instead of $this 
2

.

2

당신은

$('.featured-value').click(function() { return postAndFade($(this), 'featured'); }); 
$('.visible-value').click(function() { return postAndFade($(this), 'visible'); }); 

this는 DOM 요소에 대한 참조 할 수 있습니다.

은 아무 것도 아니며 때때로 jQuery 객체를 저장하기 위해 var $this = $(this)과 같이 사용되므로 여러 번 다시 생성하지 않습니다.

2

시도 대신에 $ 내가 jQuery를 구사하지 못하는이

$('.featured-value').click(function() { return postAndFade($(this), 'featured'); }); 
$('.visible-value').click(function() { return postAndFade($(this), 'visible'); });