jQuery Mobile CSS 问题

标签 jquery css jquery-mobile

我在 jQuery Mobile 中有一个页面,页面本身有一些自定义的 css,但是当我通过 ajax 调用此页面时,它不会加载自定义 css。但是,如果我刷新页面,页面将加载自定义 CSS。我怎样才能阻止这种情况发生,因为我只希望自定义 css 在调用页面时显示。我的代码如下:

<!doctype html>
<html lang="en">
<head>
    <title>Player</title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
        <style>     
        #navgroup {text-align:center;}
        #navgroup div {display:inline-block;}

            .containing-element .ui-slider-switch
        {
            width: 100%;
        }

        input.ui-slider-input {display: none;}

        .slider-shit .ui-btn
        {
            margin-left: -15px;
            margin-top: -15px;
        }

        .slider-shit .ui-slider
        {
            width: 100%;
            top: 3px;
            margin: 0;
            opacity: 1;
        }

        .slider-shit
        {
            padding: 0 20px 0 0;
        }

        .ui-slider div {
            margin:  0 15px 0 38px !important;
        }

        .ui-slider div div {
            margin:  0 !important;
        }

        #posSlider {
             display: none;           
        }

        #nextSong {
            border-right-width: 1px !important;   
            border-bottom-right-radius: inherit;
            border-top-right-radius: inherit;    
        }

        #songOptionsButton {
            position: absolute;
            bottom: 10px;
            right: 10px;
            border-left-width: 1px !important;
            border-bottom-left-radius: inherit;
            border-top-left-radius: inherit;      
        }

        .ui-header .ui-btn-icon-top .ui-btn-inner, .ui-footer .ui-btn-icon-top .ui-btn-inner {
            padding: 37px 20px 0.5em;
        }
    </style>
</head>
<body>
    <!--Player for indivdual and playlist songs-->
    <div data-role="page" data-add-back-btn="true" id="player">
        <div data-role="header" data-position="fixed">
            <h1 id="songName">Nothing Playing...</h1>
            <a href="#" id="favourite" data-role="button" data-icon="star" data-iconpos="notext" class="ui-btn-right">mark as favourite</a>
        </div>
        <div data-role="content" style="height: 100%;" id="songPicture">
        </div>
        <div data-role="footer" data-position="fixed">
            <table style="margin-left: 5px; margin-right: 5px;">
                <tr>
                    <td><p id="songCurrentpos">0:00</p></td>
                    <td width="100%" class="slider-shit"><input type="range" name="slider" id="posSlider" value="0" min="0" max="100" width="100%" data-theme="d" data-highlight="true"/></td>
                    <td><p id="songDuration">0:00</p></td>
                </tr>
            </table>
            <div id="navgroup">
                <div data-role="controlgroup" data-type="horizontal">
                    <a data-role="button" data-iconpos="top" data-icon="back" id="previousSong" data-inline="true">Previous</a>
                    <a data-role="button" data-iconpos="top" data-icon="arrow-r" id="playSong" data-inline="true">Play</a>
                    <a data-role="button" data-iconpos="top" data-icon="forward" id="nextSong" data-inline="true">Next</a>
                    <a href="#songOptionsPage" id="songOptionsButton" data-role="button" data-iconpos="top" data-icon="gear" data-iconpos="notext" data-rel="dialog" data-inline="true">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
                </div>
            </div>
        </div>
    </div>
</body>

最佳答案

如果我没理解错的话,您是在使用 ajax 将此页面加载到 DOM 中吗?如果这是真的,那么我理解你的问题。您会看到,当使用 ajax 加载页面时,只有 BODY 内容会加载到 DOM 中。

如果将 css 加载到第一个 HTML 文件中或将 STYLE block 移动到 BODY 内容中,则可以解决问题。

这是一个如何将样式包含在 BODY block 中的示例:

<!DOCTYPE html>
<html>
<head>
    <title>jQM Complex Demo</title>
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
    <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>    
</head>
<body>
    <style>
        #content-test {
            background: red !important;
        }
    </style>
    <div data-role="page" id="index">
        <div data-theme="a" data-role="header">
            <h3>
                First Page
            </h3>
            <a href="index3.html#second" class="ui-btn-right">Next</a>
        </div>

        <div data-role="content" id="content-test">

        </div>

        <div data-theme="a" data-role="footer" data-position="fixed">

        </div>
    </div>  
</body>
</html>   

另外,我在我的另一个答案中用更多细节和几个例子描述了这个问题: https://stackoverflow.com/a/15431229/1848600

关于jQuery Mobile CSS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732940/

相关文章:

javascript - jQuery - 重现序列化()

JavaScript/jQuery : how to catch a click that targets any element except for several specified elements?

jquery - 使用 asp.net mvc 3 时如何将 jQuery load() 加载到动态创建的元素中?

javascript - 为什么 jquery mobile 不适用于 Phonegap?

javascript - 滑动事件可在触摸设备上导航幻灯片

php - 上传文件 - 500 内部服务器错误

html - 表格列太宽

javascript - 为什么更改父类为空输入?

html - 滚动到页面顶部和底部后如何防止空白 "bounce"

javascript - 如何在 Jquery Mobile 中的两个页面之间传递和获取参数?