3
我需要一個導航菜單來反映基於點擊和滑動的頁面更改。要執行此操作,我必須在刷卡時觸發點擊。問題是,當我這樣做,我不能再使用:更改使用觸發器時的jQuery Mobile轉換('點擊')
$.mobile.changePage(prevpage, { transition : 'realslide', reverse : true });
隨着作爲重要組成部分的財產reverse:true
。 'swipeleft'可以有一個正常的轉換,但'swiperight'需要反向轉換,我不能在HTML中使用data-transition="reverse"
,因爲它取決於滑動方向。
目前這是我的代碼的樣子(由用戶Jasper提供)。我不知道我在哪裏可以在反向過渡配合
$(function(){
var $nav = $('#nav').children().children(),
totNav = $nav.length;
$(document).on('swipeleft', '.ui-page', function() {
var next = ($nav.filter('.active').index() + 1);
if (next === totNav)
return;
$nav.eq(next).children().trigger('click');
}).on('swiperight', '.ui-page', function() {
var prev = ($nav.filter('.active').index() - 1);
if (prev === -1)
return;
$nav.eq(prev).children().trigger('click');
}).on('click', '#nav a', function(e) {
$(this).parent().addClass("active").siblings().removeClass("active");
});
});
這個問題是這樣的一個延伸。Update menu in jQuery Mobile based on swipe event
編輯: 謝謝大家對你的幫助!這是我的最終解決方案:
<script>
$(function(){
var $nav = $('#nav').children().children(),
totNav = $nav.length;
$(document).on('swipeleft', '.ui-page', function() {
var next = ($nav.filter('.active').index() + 1);
var $elem = $nav.eq(next).children();
if (next === totNav)
return;
$.mobile.changePage.defaults.reverse = false;
$elem.trigger('click');
}).on('swiperight', '.ui-page', function() {
var prev = ($nav.filter('.active').index() - 1);
var $elem = $nav.eq(prev).children();
if (prev === -1)
return;
$.mobile.changePage.defaults.reverse = true;
$elem.trigger('click');
}).on('click', '#nav a', function(e) {
var prev = $nav.filter('.active').index();
$(this).parent().addClass("active").siblings().removeClass("active");
var now = $nav.filter('.active').index();
if (prev > now)
$.mobile.changePage.defaults.reverse = true;
else
$.mobile.changePage.defaults.reverse = false;
});
});
</script>
+1似乎並沒有太多的hackish給我 – shanabus 2012-03-15 15:34:24
我不能相信工作。文檔說,這些默認設置必須在jquery mobile使用'$(document).bind(「mobileinit」,function(){});'加載之前設置,所以我認爲它們不可能是隨時更改。 – bafromca 2012-03-15 15:54:47