2013-04-01 22 views
3

我使用jQuery的Accordionn控制,你可以找到以下網址:如何管理空的jQuery手風琴面板?如何禁用點擊「Accordion Header」?

手風琴:http://jqueryui.com/accordion/

問題:我們如何管理空菜單未點擊;例如 - 如果我沒有'第2部分'菜單上的任何項目,它不應該是可點擊的。當我這樣做時,要麼使下一個父菜單項子項前一個和扭曲,或者如果我只留下一個空格<div>它打開一個空白菜單,而不是可點擊。誰能幫忙?

+0

如果你沒有在菜單中任何事情,你爲什麼要打擾它嵌入到一個空的DIV中?? –

回答

4

您可以http://api.jqueryui.com/accordion/#event-beforeActivate

$(".selector").on("accordionbeforeactivate", function(event, ui) {}); 

在功能上嘗試可以測試ui.newPanel,如果爲空,則取消該面板的激活。

我創建的jsfiddle例如:http://jsfiddle.net/npthU/1/

$("#accordion").on("accordionbeforeactivate", function(event, ui) { 

     if($.trim($(ui.newPanel).html()).length == 0) 
      event.preventDefault(); 

    }); 

用於event.preventDefault();來禁用空div面板特有的開放。

+0

感謝@freshbm在這個問題上的快速關注,我真的很感激。讓我嘗試儘早回覆你。 – mknayab

+0

對不起@freshbm,也許你的答案也是正確的,但不幸的是我無法修復。我相信我缺乏理解,但不知何故,我這樣做了,請檢查http://jsfiddle.net/wru3j/ 謝謝反正...... – mknayab

+0

哦,我再次嘗試,它也可以... ...哇,我現在有兩種不同的解決方案:-)謝謝@freshbm,我檢查了你的答案。 – mknayab

0

下面這段代碼的更新:

$('#'+_id).on("accordionbeforeactivate", function(event, ui) { 
     if((($.trim($(ui.newPanel).html()).length == 0)&&($(ui.oldHeader).length==0))||(($.trim($(ui.newPanel).html()).length == 0)&&($(ui.newHeader).length))){event.preventDefault();}); 

現在它能夠摺疊/展開