2010-03-24 5 views
0

아코디언 섹션을 열 때 콜백 만 수행해야합니다. 지금은 클릭 기능 만 사용하기 때문에 섹션을 닫거나 열 때 콜백을 수행합니다. . 주어진 섹션이 활성화되었을 때만 실행되도록 기존 클릭 기능을 수정할 수있는 방법이 있습니까?JQuery UI : 아코디언 콜백

나의 현재 클릭 기능 :

$("a#mimetypes").click(function() { 
    $("span#mimetypesthrobber").loading(true, { max: 1500 }) 
    $.getJSON("../mimetypes", function(data) { 
     //callback 
    }); 
}); 

감사합니다!

편집 :

이미 아코디언의 다른 부분이 시도하고 올바르게 작동되지 않은 :

$('.ui-accordion').bind('accordionchange', function(event, ui) { 
if (ui.newHeader == "Encoders") { 
EncodersGet(); 
} 
}); 

답변

2

당신은은 "change event"

$('.ui-accordion').bind('accordionchange', function(event, ui) { 
    ui.newHeader // jQuery object, activated header 
    ui.oldHeader // jQuery object, previous header 
    ui.newContent // jQuery object, activated content 
    ui.oldContent // jQuery object, previous content 
}); 

을 사용할 수 있습니다 예를 들어 "newHeadert"에 액세스하여 처리합니다.

EDIT

새로운 정보에 따라 {축소하기 : 활성 사실 : 거짓} 모든 섹션이

를 폐쇄하는 경우

$(document).ready(function() { 
      var $acc = $('#accordion').accordion({ collapsible: true, 
        active : false , 
        change : function (event, ui) 
        { 
           var index = $acc.accordion("option", "active"); 
        if(index === false){ 
           // all are close 
           } 
           else{ 
           // 0-based index of the open section 
           } 

        } 
      }); 
     }); 

은 "옵션, 활성"당신에게 열려있는 섹션의 인덱스 또는 "false"를 반환

+0

내 편집을 참조하십시오. 감사. – user177215

0

모든 아코디언 섹션이 dfault에 의해 닫히면 click 이벤트를 토글로 바꾸고 두 번째 기능은 간단하게 수행 할 수 있습니다.

$("a#mimetypes").toggle(function() { 
    $("span#mimetypesthrobber").loading(true, { max: 1500 }); 
    $.getJSON("../mimetypes", function(data) { 
     //callback 
    }); 
}, 
function() { 
    //do nothing 
}); 

더 나은 솔루션은 활성 섹션에 클래스를 추가하고로드를 호출하기 전에 해당 클래스를 확인하는 것입니다. undertakerors에

$("a#mimetypes").click(function() { 
    if ($(this).hasClass("active")) { 
     $(this).removeClass("active"); 
    } 
    else { 
     $(".active").removeClass("active"); //Edit - remove all active classes to account for this section being closed by the opening of another 
     $(this).addclass("active"); 

     $("span#mimetypesthrobber").loading(true, { max: 1500 }); 
     $.getJSON("../mimetypes", function(data) { 
      //callback 
     }); 
    } 
}); 
+0

더 좋은 해결책을 가진 결함은 다른 섹션의 머리글을 클릭하여 아코디언의 섹션을 닫을 수 있다는 것입니다. 따라서 아코디언이 더 이상 활성화되지 않아도 수업은 삭제되지 않습니다. – user177215

+0

아코디언에 대한 CSS가 {collapsible : true, active : false}라고 지적해야합니다. – user177215

+0

지적한 결함을 수정하여 수정했습니다. –

1

한 개선 대답 : 일치하는 최초의 아코디언 요소를 방지하기 위해 false로 지수를 비교할 때 삼중 등호를 사용합니다.

if (index === false) { 
    // All are closed 
} else { 
    // 0-based index of the open section 
} 

조건을 평가할 때는 double equals이 유형 변환을 수행합니다.

관련 문제