2011-12-06 3 views
1

jquery UI 탭 안에 datatables를 사용하고 있습니다. 한 가지 문제를 제외하고는 모두 예상대로 작동합니다. URL의 해시 값에 따라 클릭을 트리거하거나 다른 탭을 선택하고 싶습니다.Jquery Datatables + Jquery Tabs = an은 정의되지 않았습니다.

이것이 내가 일반적으로 트릭을 할해야

$(document).ready(function() { 
    var hash = window.location.hash; 
    if (hash == '') hash = 'add'; 
    hash = hash.replace('#', ''); 
    $("a[href=#"+hash+"]").click(); 
}); 

이 함께했다하지만하지 않았다 것입니다. an is undefined 문제가 지난 7 시간 동안 나를 사냥하고 있습니다.

나는 또한이 문제를 해결하기 위해 다른 접근 방식을 시도했다. 예를 들어 .trigger('click') 또는 .click()을 사용하는 대신 jQuery UI Tabs 옵션을 사용하기로 결정했습니다.

$(document).ready(function() { 
    var hash = window.location.hash; 
    if (hash == '') hash = 'add'; 
    hash = hash.replace('#', ''); 

    i = 0; 
    $('ul#tablinks li a').each(function() { 
     href = $(this).attr('href'); 
     if (href === '#'+hash) $(".tabs").tabs("option", "selected", 2); 

     i = i + 1; 
    }); 
}); 

는 아무리 내가 탭 메뉴에서 아무것도 만지지을 무엇을, 나는 an is undefined for (var i=0, iLen=an.length ; i<iLen ; i++) ... 오류가 발생하지 않습니다.

는 사람이 datatables + JQuery와 UI 탭과 비슷한 문제를 경험 또는 아마 당신은 몇 가지 조언 ...

사전에 시간과 관심에 감사드립니다 있었나요.

+1

닫는 중괄호 뒤에 닫는 아포스트로피가 없습니다. '$ ('a [href = # '+ hash +']). click();'은 오타이거나 라이브 스크립트와 동일합니까? –

+1

첫 번째 자바 스크립트 블록'$ ('a [href = #'+ hash + '])에서 click();은 닫는 따옴표가 없습니다. 그리고 당신은 같은 따옴표를 사용하고 있습니다. –

+0

@DavidThomas; 내가 잘못 작성했습니다. 내 라이브 스크립트와 동일하지 않습니다. @ScruffyTheJanitor; 아무것도 변경하지 않았습니다 :( – Revenant

답변

1

어떤 이유로 든 내 문제를 SOF에 게시 한 후 해결 방법을 찾았습니다. 이 질문은 다른 사람들과 마찬가지로 다시 한 번 내 '오, 지금'반응이 요즘 반복되는 것처럼 보입니다.

서버 측 처리와 함께 datatables를 사용하고 있습니다. 즉, 페이지 자체가로드 된 후 데이터가로드됩니다. 그래서 어떤 이유로 든 $(document).ready();이 예상 결과를 제공하지 못하고 내가 원하는 것을하기 전에 추가 시간을 추가해야했습니다.

setTimeout(function() { 
    var hash = window.location.hash; 
    if (hash == '') hash = 'add'; 
    hash = hash.replace('#', ''); 
    $("a[href=#"+hash+"]").click(); 
}, 1000); 

트릭을 했습니까? @David Thomas와 @Scruffy 감독관은 당신의 시간과 관심에 감사드립니다.