2013-03-08 2 views
2
function openFaceBox(path) { 
    $.ajax({ 
     type: "GET", 
     url: path, 
     success: function(data) { 
      $.facebox(data); // data returns html 
        var tableHeight = $(data).find('table').height(); 
        console.log(tableHeight); // Output : 0 (Zero) 
     }    
    }); 
} 

내 AJAX 반환 HTML AJAX 반환 데이터에 작동하지 않는 것은 다음과 같습니다 : .find()가 작동하지 않는 이유jQuery를 찾기가

<div id="holder-1"> 
    <h1>Content 1</h1> 
</div> 
<div id="holder-2"> 
    <h1>Content 2</h1> 
</div> 
<div id="holder-3"> 
    <h1>Content 3</h1> 
</div> 
<table> 
    <tr> 
     <td>abcd</td> 
     <td>Some Text Here Some Text Here Some Text Here Some Text Here 
      Some Text Here Some Text Here Some Text Here Some Text Here Some Text 
      Here Some Text Here Some Text Here Some Text Here Some Text Here Some 
      Text Here Some Text Here Some Text Here Some Text Here Some Text Here 
      Some Text Here Some Text Here Some Text Here Some Text Here Some Text 
      Here</td> 
    </tr> 
</table> 

내가 알아낼 수 없습니다. 기본적으로 나는 테이블 높이를 찾고 싶습니다. 혼란스러워서 알려주세요.

답변

2

filter()을 사용하십시오. dataHTML의 문자열이라고 가정하면

console.log($(data).filter('table')); 

, 당신은이 작업을 수행 할 수 있습니다

$(data).find('table'); 

DOM에 데이터를 추가하지 않고 table가 반환.

+0

나는 이것을 시도했지만 작동하지 않습니다. – som

+0

@SoumyaBiswas 표에 height = "10"을 추가 한 다음 시도해보십시오. 항상 작동합니다. 정의 된 높이가 없습니다. –

+0

실제로 테이블의 높이를 찾고 싶습니다. 테이블 데이터가 증가합니다. 기본적으로 테이블 높이를 설정할 수 없습니다. – som

0

$ .facebox()가 무엇인지 모르지만 요소가 DOM에로드 될 때까지 요소의 높이를 찾을 수 없습니다. 이것은 다소 미친 짓이지만, 그것은 당신에게 당신의 신장을 가져다 줄 것입니다.

$('body').append($('<div>',{class:'faceboxHolder'}).css('left':'5000px', 'position':'absolute').append(data));  

    var tableHeight = $('.faceboxHolder').find('table').height(); 

    $('.faceboxHolder').remove(); 
1

당신은

같은이 reveal.facebox 이벤트 핸들러를 등록 할 필요가

$(document).on('reveal.facebox', function(){ 
    var tableHeight = $('#facebox .content table').height(); 
    //Do whatever you want with the height 
}); 

function openFaceBox(path) { 
    $.ajax({ 
     type: "GET", 
     url: path, 
     success: function(data) { 
      $.facebox(data); // data returns html 
        var tableHeight = $(data).find('table').height(); 
        console.log(tableHeight); // Output : 0 (Zero) 
     }    
    }); 
} 

데모 : Fiddle

참고 :이 요소가 아니므로
$(data).find('table').height()이 작동하지 않습니다 아직 DOM에 렌더링되므로이 요소의 높이/너비는 없습니다. facebox 항목이 렌더링되면 facebox는 revleal.facebox 이벤트를 트리거하고, facebox 내용은 기본적으로 #facebox .content 요소로 렌더링됩니다.

관련 문제