2014-01-28 29 views
1

我在我的jQuery手机1.4.0应用程序中有以下可折叠设置,我需要添加一个动画到这个可折叠设置时,它的展开和关闭,我已经试过这个代码和其在jsfiddle中的工作正常,这是我的jsfiddle,但问题是动画不适用于我的应用程序与jQuery的移动1.4.0。我如何使这个动画在jQuery移动1.4.0上工作?请帮助我..可折叠设置不工作在jQuerymobile 1.4.0的自定义动画

JavaScript代码进行动画

<script> 
$('document').on('pageinit',function(){  

     animateCollapsibleSet($("[data-role='collapsible-set'] > [data-role='collapsible']")); 

}); 

// animation speed; 
var animationSpeed = 200; 

function animateCollapsibleSet(elm) 
{ 

     // can attach events only one time, otherwise we create infinity loop; 
     elm.one("expand", function() { 

    // hide the other collapsibles first; 
     $(this).parent().find(".ui-collapsible-content").not(".ui-collapsible-content- collapsed").trigger("collapse"); 

    // animate show on collapsible; 
     $(this).find(".ui-collapsible-content").slideDown(animationSpeed, function() { 

    // trigger original event and attach the animation again; 
     animateCollapsibleSet($(this).parent().trigger("expand")); 
    }); 

// we do our own call to the original event; 
    return false; 
    }).one("collapse", function() 
    { 

     // animate hide on collapsible; 
     $(this).find(".ui-collapsible-content").slideUp(animationSpeed, function() { 

      // trigger original event; 
      $(this).parent().trigger("collapse"); 
     }); 

     // we do our own call to the original event; 
     return false; 
    }); 
    } 



</script> 
+0

检查这个http://jsfiddle.net/Palestinian/3LvQh/ – Omar

+0

@OmarThanks它的工作,但有两个问题:第一个,如果我扩大Governorate1然后展开Governorate2的Governorate1没” t自动关闭,我需要点击它2次才能关闭它当我们点击前面的例子Governorate2时,我们怎样才能更新这个代码,如果Governorate1展开它将自动关闭。 – user

+0

Omar的代码关闭其他打开的可折叠的代码的小更新:http://jsfiddle.net/ezanker/3LvQh/3/ – ezanker

回答

3

鉴于多个国家为collapsibles(不在一组),每个国家包含可压缩集与几个collapsibles。该标记看起来是这样的:

<div data-role="content"> 
    <div data-role="collapsible" data-iconpos="left" data-collapsed-icon="carat-d" data-expanded-icon="carat-u" class="col" > 
    <h3 ><div>Country 1</div></h3> 

    <div data-role="collapsible-set" data-iconpos="left" data-collapsed-icon="carat-d" data-expanded-icon="carat-u" class="governorates"> 
     <div data-role="collapsible" > 
       <h3 class="Mycollapsible"><div style="color:white;font-weight:normal;">Governorate1</div></h3> 
       <ul data-role="listview"> 
        <li data-icon='false'> <font class="NameStyle">Village1</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village2</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village3</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village4</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village5</font></li> 
       </ul> 
      </div> 
      <div data-role="collapsible"> 
       <h3 class="Mycollapsible"><div style="color:white;font-weight:normal;" >Governorate2</div></h3> 
       <ul data-role="listview"> 
        <li data-icon='false'> <font class="NameStyle">Village1</font> </li> 
        <li data-icon='false'> <font class="NameStyle"> Village2</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village3</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village4</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village5</font></li> 
       </ul> 
      </div> 
     </div> 
    </div> 

    <div data-role="collapsible" data-iconpos="left" data-collapsed-icon="carat-d" data-expanded-icon="carat-u" class="col" > 
     <h3 ><div>Country 2</div></h3> 
     <div data-role="collapsible-set" data-iconpos="left" data-collapsed-icon="carat-d" data-expanded-icon="carat-u" class="governorates"> 
      <div data-role="collapsible" > 
       <h3 class="Mycollapsible"><div style="color:white;font-weight:normal;">Governorate1</div></h3> 
       <ul data-role="listview"> 
        <li data-icon='false'> <font class="NameStyle">Village1</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village2</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village3</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village4</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village5</font></li> 
       </ul> 
      </div> 
      <div data-role="collapsible"> 
       <h3 class="Mycollapsible"><div style="color:white;font-weight:normal;" >Governorate2</div></h3> 
       <ul data-role="listview"> 
        <li data-icon='false'> <font class="NameStyle">Village1</font> </li> 
        <li data-icon='false'> <font class="NameStyle"> Village2</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village3</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village4</font></li> 
        <li data-icon='false'> <font class="NameStyle"> Village5</font></li> 
       </ul> 
      </div> 
     </div> 
    </div> 
</div> 

在JavaScript中,我处理好国家扩大/添加一个类.governorates该可收缩套

$(document).on('pagecreate', function() { 
    $(".governorates .ui-collapsible-heading-toggle").on("click", function (e) {   
     var current = $(this).closest(".ui-collapsible"); 
     if (current.hasClass("ui-collapsible-collapsed")) { 
      $(".ui-collapsible-content", current).slideDown("fast", function() { 
       current.trigger("collapsibleexpand"); 
       //hide previously expanded 
       $(".governorates .ui-collapsible-content-collapsed").slideUp('fast');      
      }); 
     } else { 
      $(".ui-collapsible-content", current).slideUp("fast", function() { 
       current.trigger("collapsiblecollapse"); 
      }); 
     } 
    }); 

    $(".col .ui-collapsible-heading-toggle").not(".governorates .ui-collapsible-heading-toggle").on("click", function (e) {   
     var current = $(this).closest(".ui-collapsible");    
     if (current.hasClass("ui-collapsible-collapsed")) { 
      $(".ui-collapsible-content", current).not(".governorates .ui-collapsible-content").slideDown("fast", function() { 
       current.trigger("collapsibleexpand"); 
      }); 
     } else { 
      $(".ui-collapsible-content", current).not(".governorates .ui-collapsible-content").slideUp("fast", function() { 
       current.trigger("collapsiblecollapse"); 
      }); 
     } 
    }); 
}); 

这里是第二级可折叠套分别崩溃一个工作DEMO(基于奥马尔在OP评论线索的初步工作)。

+0

做得好+1 :) – Omar

+0

接受,和+1 .. – user

+0

后人的两个评论:1)我相信在代码中触发'expand'和'collapse'事件是一个doublette 。 2)jQuery的'slide'函数直接将元素添加到元素中,所以后续调用“collapsible”(“collapse”)'不再适用 - 必须使用'removeAttr(“style”)' slideUp' /'slideDown'分别调用'collapse'或'expand'。 – deblocker

0

我知道一个答案已经被选中,但是,在这里我已经分叉了ezanker的小提琴,做同样的事情,但代码少。

http://jsfiddle.net/fussycashew/EZ2Kx/

$(document).on('pageinit', function(){ 
    $("[data-role='collapsible']").collapsible({ 

     collapse: function(event, ui) { 
      $(this).children().next().slideUp(150); 
     }, 
     expand: function(event, ui) { 
      $(this).children().next().hide(); 
      $(this).children().next().slideDown(150); 
     } 

    }); 
});