2

jQueryMobile用のFullCalendarプラグインに問題があります。基本的に、ページをロードするとカレンダーはわかりませんが、ページをリロードするとわかります。私が読んだところによると、jQuerymobileではdata-role="page内のデータのみが読み込まれるようです。ページへのリンクをdata-ajax= "false"として設定すると、正常に機能しますが、保持したいajax。

<!DOCTYPE html> 
<html> 
<head> 
<title>My Page</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>

<script type='text/javascript' src='js/fullcalendar.min.js'></script>
<link rel='stylesheet' type='text/css' href='css/fullcalendar.css' />
<script type='text/javascript'>

$(document).ready(function() {

    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    $('#calendar').fullCalendar({
        editable: true,
        events: [
            {
                title: 'All Day Event',
                start: new Date(y, m, 1)
            },
            {
                title: 'Long Event',
                start: new Date(y, m, d-5),
                end: new Date(y, m, d-2)
            },
            {
                id: 999,
                title: 'Repeating Event',
                start: new Date(y, m, d-3, 16, 0),
                allDay: false
            },
            {
                id: 999,
                title: 'Repeating Event',
                start: new Date(y, m, d+4, 16, 0),
                allDay: false
            },
            {
                title: 'Meeting',
                start: new Date(y, m, d, 10, 30),
                allDay: false
            },
            {
                title: 'Lunch',
                start: new Date(y, m, d, 12, 0),
                end: new Date(y, m, d, 14, 0),
                allDay: false
            },
            {
                title: 'Birthday Party',
                start: new Date(y, m, d+1, 19, 0),
                end: new Date(y, m, d+1, 22, 30),
                allDay: false
            },
            {
                title: 'Click for Google',
                start: new Date(y, m, 28),
                end: new Date(y, m, 29),
                url: 'http://google.com/'
            }
        ]
    });

});

</script>
</head> 
<body> 
<div data-role="page">

<div data-role="header">
    <a href="#" data-rel="back">Back</a>
    <h1>My Team</h1>

    <div data-role="navbar">
        <ul>
            <li><a href="index.html">Home</a></li>
            <li><a href="team.html">Team</a></li>
            <li><a href="schedule.html">Schedule</a></li>
            <li><a href="reset.html">Reset</a></li>
        </ul>
    </div><!-- /navbar -->

</div><!-- /header -->

<div data-role="content">       
    <div id='calendar' style="width:100%;"></div>
</div><!-- /content -->

</div><!-- /page -->
</body>
</html>
4

1 に答える 1

2

これがあなたのための実例です:http://jsfiddle.net/Gajotres/ZSd2C/

jQMで$(document).ready(function() {を使用しないでください。jQM には独自のページ処理イベントのセットがあります。この場合、pageshow イベントがトリガーされたときにコードが表示されます。

$('#index').live('pageshow',function(e,data){    
    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();

    $('#calendar').fullCalendar({
        editable: true,
        events: [
            {
                title: 'All Day Event',
                start: new Date(y, m, 1)
            },
            {
                title: 'Long Event',
                start: new Date(y, m, d-5),
                end: new Date(y, m, d-2)
            },
            {
                id: 999,
                title: 'Repeating Event',
                start: new Date(y, m, d-3, 16, 0),
                allDay: false
            },
            {
                id: 999,
                title: 'Repeating Event',
                start: new Date(y, m, d+4, 16, 0),
                allDay: false
            },
            {
                title: 'Meeting',
                start: new Date(y, m, d, 10, 30),
                allDay: false
            },
            {
                title: 'Lunch',
                start: new Date(y, m, d, 12, 0),
                end: new Date(y, m, d, 14, 0),
                allDay: false
            },
            {
                title: 'Birthday Party',
                start: new Date(y, m, d+1, 19, 0),
                end: new Date(y, m, d+1, 22, 30),
                allDay: false
            },
            {
                title: 'Click for Google',
                start: new Date(y, m, 28),
                end: new Date(y, m, 29),
                url: 'http://google.com/'
            }
        ]
    });
});

ここでの主な問題は、jQuery Mobile ページが完全に読み込まれる前にトリガーされるドキュメントの準備です。私の例のように、pageshowイベントで解決できます。詳しく知りたい方はこちらの記事をどうぞ

于 2012-12-21T16:33:28.567 に答える