2011-04-22 1 views
0

'부모의 포스트 기능에서 데이터를 얻을 수(). 부모() 위치

$.ajax({ 
    type: "POST", 
    url: "ef_StdInfo_todb.php", 
    data: formVals(), 
    success: function(data, msg){ 
    $(this).parent().parent().html(data); 
    $(this).parent().parent().('#status_Div").text(msg); 
    } 

' 아무 일도 발생하지 않습니다 사용 JQuery와 가치를 얻을하는 방법에 대해 설명합니다. 하지만 부모, 부모 선 대신 직접 div 이름 $ ("anydiv")를 입력하면. 값이 나타납니다. 무엇이 잘못 되었습니까?

답변

2

Alex가 지적하는 선택기는 정확하지만 전화하는 방법을 모르면 $.ajax() 몇 가지 가정을합니다.

$.ajax({ 
    type: "POST", 
    url: "ef_StdInfo_todb.php", 
    data: formVals(), 
    success: function(data, msg) { 
     $(this).parent().parent().find('#status_Div').text(msg); 
    } 
}); 

this

xhr 객체에 대한 참조하고 클릭하거나 성공 호출이 실패 이유를 설명 할 것 $.ajax를 트리거되지 요소가 될 것입니다.

.click()을 통해 호출 된 경우 클릭 한 요소를 저장하는 변수 만 만들면됩니다. 당신이 id를 통해 조회되기 때문에

$(":button").click(function() { 
    var $that = $(this); 
    $.ajax({ 
     type: "POST", 
     url: "ef_StdInfo_todb.php", 
     data: formVals(), 
     success: function(data, msg) { 
      $that.parent().parent().html(data); 
      $('#status_Div').text(msg); 
     } 
    }); 
}); 

사이드 노트, 당신은 단순히 약

Example on jsfiddle

+0

+1을 언급 한 'this'는 요소를 가리키지 않습니다. :) – alex

+0

대단히 감사합니다. .. 나는 정말로 그것을 가지고 있습니다. 그리고 ... .. – MFarooqi

+0

이 도움에 감사드립니다 ... – MFarooqi

2
$(this).parent().parent().('#status_Div").text(msg); 

이 줄은 잘못되었습니다. parent()으로 두 번째 호출 후 find()을 원할 수도 있습니다. 같은 문자열에서 구분 기호로 '"을 사용하고 있습니다. 그것은 작동하지 않습니다. 둘 중 하나를 선택하고 일관성을 유지하십시오.

$(this).parent().parent().find('#status_Div').text(msg); 

또한, 하나는 선택 일치 할 때까지 부모 노드에 액세스하기 위해 선택 문자열로 closest()를 사용할 수 있습니다. parent() 번으로 여러 번 전화하는 것은 피해야합니다.

+0

.parent()이 "발견 ...이 도움을 주셔서 대단히 감사합니다 걱정없이 $('#status_Div').text(msg) 부를 수 "다른 물건들도 나를 도왔다 .. – MFarooqi

1

알렉스가 옳다. 어쨌든 $(this).parent().parent().html(data);은 parent(). parent() 내부에있는 내용을 대체하므로 #status_Divdata에 포함 된 경우에만 찾을 수 있습니다. 내가 맞습니까?

+0

+1, 좋은 캐치! –

관련 문제