2016-05-27 77 views
0

所以我想通過一類手風琴jquery對象迭代,檢查哪些是開放的,將它們添加到數組中,然後(重置手風琴之後)重新打開手風琴之前開放。這似乎是一個非常簡單的問題,我很抱歉,但在我的搜索中,似乎問題只是關於迭代使用jquery,而不是迭代jquery對象的數組。我真的找不到答案。動態打開jQuery手風琴陣列

這是我目前有,這是由於某種原因不起作用。首先,已經開放了一批已經開放的手風琴。

 $(".accordionClass").each(
      function(){ 
       if($(this).accordion("option", "active") !== false) { 
        activeArray.push($(this)); 
       } 
      } 
     ); 

這似乎工作。至少,activeArray.length給出了正確數量的對象。

然後,我試着在它們重新初始化之後打開這個數組中的所有手風琴。

$.each(activeArray, 
     function(){ 
      $(this).accordion({ active: 0 }); 
     } 
    ); 

沒有骰子。他們不打開。有任何想法嗎?

+1

作爲活動數組已經包含jquery對象..你可以做this.accordian({active:0})。但是更好的解決方案可以像建議的那樣將DOM對象保存爲數組而不是jQuery對象。希望你不重新創建DOM對象? – Ankit

回答

0

解決到問題

在問題書面,你是推jQuery的對象($(this))到您陣列,讀出來,然後在另一個jQuery選擇包裝的對象。

您應該改爲推送本機DOM對象this


問題的解決方案

的具體問題就在這裏(在這個答案的評論中發現,而不是問題本身)是該對象被銷燬,然後類似物體正在創建(從相同的標記)。這通常是不好的做法,但它也會導致問題:在被讀出時,被推入數組的this引用的對象不再存在。

取而代之,您應該推this.id,然後使用jQuery重新選擇副本$('#'+this)

+0

還沒有。我也嘗試了其他方式打開,如 '$(this).accordion(「option」,「active」,0);' 沒有結果,所以我真的不知道什麼問題是。 –

+0

對不起,我忍不住了;我是afk。嘗試使用JSON.stringify調查對象內容。並嘗試讓所有的手風琴開放(或只是一個特定的手風琴)以找到正確的方式來打開它們。 – Kittsil

+0

嗯yeeeah。因此''JSON.stringify(activeArray);'在僅使用'this'填充的數組上完成時給出'[{},{},{}]''。 stringify用'$(this)'填充時,給出了[{「0」:{},「context」:{},「length」:1},{「0」:{},「context」 }, 「長度」:1},{ 「0」:{}, 「上下文」:{}, 「長度」:1}]'。我必須承認,我對JSON或jQuery知之甚少,無法確定這些是否如預期的那樣,或者完全被破壞。同時,使用'$(「。accordionClass」)來打開所有手風琴是相當容易的。每個( \t \t \t函數(){ \t \t \t \t $(本).accordion({活性:0}); \t \t \t} \t \t);'這麼看來,問題在於在數組中。 。 –