Trả lời

2
$.extend($.ui.multiAccordion, {  
    // private helper method that used to show tabs 
    _showTab: function($this) { 
     var $span = $this.children('span.ui-icon'); 
     var $div = $this.next(); 
     var options = this.options; 
     $this.removeClass('ui-state-default ui-corner-all').addClass('ui-state-active ui-corner-top'); 
     $span.removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s'); 
     // MODIIFICATION 
     bindThis = this; 
     var ui = { 
      tab: $this, 
      content: $this.next('div') 
     } 
     $div.slideDown('fast', function(){ 
      $div.addClass(options._classes.divActive); 
      // MODIFICATION 
      bindThis._trigger('tabShownComplete'); 
     }); 
     this._trigger('tabShown', null, ui); 
    }, 

    // private helper method that used to show tabs 
    _hideTab: function($this) { 
     var $span = $this.children('span.ui-icon'); 
     var $div = $this.next(); 
     var options = this.options; 
     $this.removeClass('ui-state-active ui-corner-top').addClass('ui-state-default ui-corner-all'); 
     $span.removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e'); 
     // MODIIFICATION 
     bindThis = this; 
     var ui = { 
      tab: $this, 
      content: $this.next('div') 
     } 
     $div.slideUp('fast', function(){ 
      $div.removeClass(options._classes.divActive); 
      // MODIFICATION 
      bindThis._trigger('tabHiddenComplete', null, ui); 
     }); 
     this._trigger('tabHidden', null, ui); 
    } 
}); 
+1

Bạn đã đúng;). Đã trễ rồi và tôi không kiểm tra mã của mình. Tôi đã xóa câu trả lời của tôi và upvoted của bạn. Chúc mừng. – Aktee

+0

@Nick cảm ơn câu trả lời của bạn .. ban đầu câu trả lời của Nupur đã giúp tôi – SAK

2

Bạn đã thử các phương pháp tabHidden và tabShown chưa?

// when tab is shown, ui here hold the same as in click event above 
    tabShown: function(event, ui) {} 

    // when tab is hidden, ui here hold the same as in click event above 
    tabHidden: function(event, ui) {} 
3

Bạn có thể dễ dàng gọi chức năng của mình trong các chức năng gọi lại của hoạt ảnh được thực hiện trên các tab. Thay đổi nhỏ trong jquery.multi-accordion-1.5.3.js

$div.slideDown('fast', function(){ 
    $div.addClass(options._classes.divActive); 
    //function to be called after expanding the tabs. 
}); 

$div.slideUp('fast', function(){ 
    $div.removeClass(options._classes.divActive); 
    //function to be called after collapsing the tabs 
}); 
+0

okay, tôi nên bao gồm các dòng ở trên và cách gọi hàm javascript do người dùng xác định giống như tabShown: function (event, ui) {} – SAK

+0

tiếc là không có tham số nào được gửi đến [function] (http: // api.jquery.com/slideDown/). Nhưng bạn có thể dễ dàng gọi bất kỳ chức năng nào từ đó. – Nupur

+0

cảm ơn bạn rất nhiều :) – SAK

5

bạn không cần tiện ích accordion cho điều đó. bạn có thể làm điều này với một vài dòng jQuery.

html:

<h3 class="header"> Title 1 </h3> 
<div class="content"> Content 1 </div> 
<h3 class="header"> Title 2 </h3> 
<div class="content"> Content 2 </div> 

javascrpt/jQuery:

(function($){ // closure to make sure jQuery = $ 
    $(function(){ // on document load 
    $(".header").click(function(e){ // select headers and set onClick event handler 
     // here you can maybe add a class to an opened header like this 
     $(this).toggleClass("open"); 
     $(this).next().toggle("slow", function(){ // toggle visibility 
     // what you write here will be executed after the animation 
     // "this" will refer to the hidden/revealed div element 
     // if you want to call a function depending on if the 
     // panel was opened or closed try this 
     if ($(this).is(":visible")) { 
      tabOpened(e, this); 
     } else { 
      tabClosed(e, this); 
     } 
     }) 
    }).next().hide() 
    }) 
})(jQuery) 

và toàn bộ điều làm việc trên jsfiddle http://jsfiddle.net/qpqL9/

Các vấn đề liên quan