2012-12-03 86 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