JQuery Mobile / Phonegap Panels嵌套滑动

时间:2013-08-05 14:39:25

标签: jquery jquery-mobile

我正在使用jQuery mobile作为我正在构建的Html5 IOS应用程序的背景。

应用简报要求滑动面板显示通知(左侧滑动)和联系信息(右侧滑动)。使用下面的代码可以正常工作,但我还需要添加嵌套滑动以获得需要左右触发器的横幅滑块 - 所以当我在'bannerArea'div上滑动时,我需要做出不同的反应,而不是其他的页。

js -

$( document ).on( "pageinit", "#demo-page", function() {
  $( document ).on( "swipeleft swiperight", "#demo-page", function( e ) {
    if ( $.mobile.activePage.jqmData( "panel" ) !== "open" ) {
        if ( e.type === "swipeleft"  ) {
            $( "#right-panel" ).panel( "open" );
        } else if ( e.type === "swiperight" ) {
            $( "#left-panel" ).panel( "open" );
        }
    }
   });
 });

html -

<div data-role="page" id="demo-page"  data-url="demo-page">
<div data-role="panel" id="left-panel" class="main_nav" data-display="push"  data-dismissible="true" data-theme="a">
    <div class="nav_profile">
        <div class="nav_name">
            <h3>Notifications</h3>
            <p>Blah</p>
            <p>Blah</p>
        </div><!--/nav_name-->
    </div><!--/nav_profile-->
</div>
<div data-role="panel" id="right-panel" data-position="right" class="main_nav" data-display="push"  data-dismissible="true" data-theme="a">
    <div class="nav_profile">
        <div class="nav_name">
            <h3>Contact</h3>
            <p>Blah</p>
            <p>Blah</p>
        </div><!--/nav_name-->
    </div><!--/nav_profile-->
</div>
<!-- /panel -->
<div data-role="header" class="header" data-position="fixed" role="banner" >
    <h3 class="hp">Zoe<span>Personal Trainer</span></h3>
    <a href="#left-panel" data-rel="panel" data-role="button" class="menu_icon left notifPanelLink" ></a>
</div>
<div data-role="content" id="background">
    <div class=" notificationArea">
    NotifBlock
    </div>
    <div class="bannerArea">

    </div>



</div>
</div>

任何人都可以为此推荐最佳解决方案 - 我正在考虑在滑动脚本中添加一个if not'bannerArea'语句,但想知道是否有更好的解决方案?

干杯

1 个答案:

答案 0 :(得分:2)

这就是我实现你的'.bannerArea'解决方案的方法。

$( document ).on( "pageinit", "#demo-page", function() {
   $( document ).on( "swipeleft swiperight", "#demo-page", function( e ) {
   if($(e.target).closest('div.bannerArea').length==0)
   {
    if ( $.mobile.activePage.jqmData( "panel" ) !== "open" ) {
        if ( e.type === "swipeleft"  ) {
            $( "#right-panel" ).panel( "open" );
        } else if ( e.type === "swiperight" ) {
            $( "#left-panel" ).panel( "open" );
    }
   }
   else {
   /** HANDLE THE BANNER SWIPE HERE**/
   }

  }
 });
});