2012-12-03 85 views
2

嗨,大家好,我試圖禁用queryUI節,我只有兩個部分,到目前爲止,我還嘗試了一些我的黑客,但沒有似乎工作,如何禁用jQueryUI的手風琴節

這裏是我曾嘗試到目前爲止,

 //Enable section1 by remove attributes 
     $('#subfacEdit').removeAttr("disabled");//div 
     $('#subfacEdit').removeAttr("display");//div 
     $('#HeadersubfacEdit').removeAttr("disabled");//H3 
     $('#HeadersubfacEdit').removeAttr("display");//H3 

     //Disable section2 
     $('#facEdit').attr("disabled", "disabled");//div 
     $('#facEdit').attr("display", "none");//div 
     $('#HeaderfacEdit').attr("disabled", "disabled");//H3 
     $('#HeaderfacEdit').attr("display", "none");//H3 

     $('#editAccdordian').accordion("activate", 1);//activate section2 

分析: 股利不被禁用,但我想顯示屬性不適用,我只想讓部分不可點擊任何手段。

我試過MasterMinds解決方案,幾乎沒有變化?
http://jsfiddle.net/X8MFf/15/

回答

2

試試這個會爲你工作...

$(".DISABLE").click(function(){ 
     $(this).next().hide(); 
     $("#accordion").accordion({active:current}); 
    }); 

Complete Example

... 
//JAVASCRIPT 
$(document).ready(function() { 
    var $accordion = $("#accordion").accordion({ collapsible: true }); 
    $("#accordion").accordion("option", "clearStyle", true); 

    var current=null; 

    $("#accordion h3:not(.DISABLE)").click(function(){ 
    current = $accordion.accordion("option","active");  
    }); 

    $(".DISABLE").click(function(){ 
     $(this).next().hide(); 
     $("#accordion").accordion({active:current}); 
    }); 
}); 
... 
    //HTML 
    <div id="accordion"> 
    <h3><a href="#">Section 1</a></h3> 
    <div> 
     MUK - 1 
    </div> 
    <h3 **class="DISABLE"**><a href="#">Section 2 (Disabled)</a></h3> 
    <div> 
     MUK - 2 
    </div> 
    <h3><a href="#">Section 3</a></h3> 
    <div> 
     MUK - 3 
    </div> 
    <h3><a href="#">Section 4</a></h3> 
    <div> 
     MUK - 4 
    </div> 
</div> 
+0

它的工作有點,onclicking禁用部分,上次打開部分打開。 –

+0

上點擊禁用部分有沒有行動,或換句話說,點擊應浪費。 –

3

你可以添加一個特殊data-屬性要禁用的,說data-enabled="false"。然後,使用beforeActivate事件,防止切換。沿線的某些東西

$("#EditAccdordian").on("accordionbeforeactivate", function(event, ui) { 
    if(ui.newHeader && ui.newHeader.attr('data-enabled') == 'false') { 
    event.preventDefault(); 
    } 
}); 

您還可以在手風琴創建中綁定事件。

$("#EditAccdordian").accordion({ 
    beforeActivate: function(event, ui) { 
    if(ui.newHeader && ui.newHeader.attr('data-enabled') == 'false') { 
     event.preventDefault(); 
    } 
    } 
}); 

你禁用頭現在應該是這樣的:

<h3 id="HeaderfacEdit" data-enabled="false">Header content</h3> 

編輯: 我刪除ui.newHeader的jQuery的選擇,因爲它是一個jQuery對象。對象的驗證應該完成,因爲它在摺疊時爲空(請參閱documentation)。

+0

嗯,beforeActivate事件將檢查的屬性值,並根據將繼續激活或將離開手風琴的激活? –

+0

因此,我只需要通過.js休息的data-enabled =「false」或data-enabled =「true」將由beforeActivate事件照顧? –

+0

@dotNetSoldier正確。 'event.preventDefault()'防止手風琴改變。然後你可以用$('#HeaderfacEdit')。attr('data-enabled','true')'設置/改變這個值。如果你用一個類替換'啓用數據',你甚至可以以不同的方式設置禁用的手風琴。 – jaudette