2010-03-24 38 views
0

我需要我的JavaScript只做回調,當我打開一個手風琴的一節,因爲它現在做一個回調,當我打開或關閉一節,因爲我只使用點擊功能。有沒有辦法可以修改我現有的點擊功能,只有在給定部分被激活時才能運行?JQuery UI:Accordion回調

我目前的點擊功能:

$("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」爲例,並進行處理

編輯

根據新的信息{可摺疊:真正的,活動:假}

$(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 
           } 

        } 
      }); 
     }); 

的「選項,主動」將在所有章節都關閉

返回你的開口部分的索引或「假」
+0

看我的編輯。謝謝。 – user177215 2010-03-24 14:24:20

0

如果所有的手風琴部分都被dfault關閉,您可以使用切換替換click事件,並讓第二個功能簡單地不做任何事情。

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

更好的解決方案是將一個類添加到活動節並在調用加載之前檢查該類。

$("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 2010-03-24 14:49:52

+0

我還應該指出,我的手風琴css是{可摺疊:true,active:false} – user177215 2010-03-24 15:00:24

+0

編輯修復您指出的缺陷。 – 2010-03-24 15:36:16

1

承辦人的一個改進答案:使用三重等於比較索引與假以避免第一個手風琴元素匹配。

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

請記住,double equals將在評估條件時執行類型轉換。