2012-08-07 6 views
2

div를 $ .get을 사용하여 업데이트 된 버전으로 바꾸려고합니다. 나는 다음과 같은 것을하고있다.

$('.clickable').click(function() { 
    $.get(url, function(data) { 
     $(this).replaceWith(data); 
    }); 
}); 

그러나 작동하지 않는 것 같다. 나는이 $ (this)가 그런 식으로 바뀌길 좋아하지 않거나 그것이 효과가 있어야한다고 생각하지 않습니까? 데이터를 검색하여 현재 div의 속성 값을 검색하고 싶지 않은 경우에는 가능합니까?

편집 : $ .get이 실제로 load()처럼 작동하지 않기 때문에 $.get(url + ' #' + $(this).attr('id')이 삭제되었습니다. 따라서 대체 된 div는 전체 데이터를 표시합니다 ... 누군가 데이터의 일부만을 선택하는 적절한 솔루션을 가지고 있다면 감사하겠습니다. 해설 등을 추가하십시오.

답변

1
$('.clickable').click(function() { 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(this).replaceWith(data); // here 
    }); 
}); 

콜백 범위에서 this은 콜백 자체를 참조합니다. 다른 변수의 임시 저장 클릭 사용 :에서 $.get 기능을

$('.clickable').click(function() { 
    var that = this; 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(that).replaceWith(data); 
    }); 
}); 
1

을, 그래서 thisthis 예전 것이 아니다, 새로운 범위가있다. 당신은 변수에이를 구할 수 : 가져 오기 작업을 호출하기 전에이 가져 오기 객체를 참조

$('.clickable').click(function() { 
    var elem = this; 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(elem).replaceWith(data); 
    }); 
}); 
1

, 당신은 식별자로 설정할 수 있습니다 즉

$('.clickable').click(function() { 
    var replaceable = this; 
    $.get(url + ' #' + $(this).attr('id'), function(data) { 
     $(replaceable).replaceWith(data); 
    }); 
});