如何在jquery mobile中填写<li> </li>

时间:2012-04-24 21:03:24

标签: jquery css jquery-mobile

我有一个<ul>,其中包含data-role =“listview”属性。对于<li>元素,我希望<div>中的<li>覆盖<li>中的主要内容,以及当某人向右滑动时,<div>动画向右滑动,显示div下面的内容。

我的问题是,当我将div添加到<li>元素时,我无法让<div>覆盖<li>元素。即使我设置了style: height=100%的样式,div似乎也占据了<li>元素空间的大约2/3。

1 个答案:

答案 0 :(得分:3)

您可以将DIV元素添加到列表项中,如下所示:

HTML -

    <ul data-role="listview">
        <li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
        <li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
        <li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
        <li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
        <li data-icon="grid"><a href="#">This is normal content.</a><div class="cover-div">Swipe to Uncover</div></li>
    </ul>

在jQuery Mobile初始化列表视图后,这将创建以下输出:

<li data-icon="grid" data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="div" data-iconpos="right" data-theme="c" class="ui-btn ui-btn-icon-right ui-li-has-arrow ui-li ui-btn-up-c">
    <div class="ui-btn-inner ui-li">
        <div class="ui-btn-text">
            <a href="#" class="ui-link-inherit">This is normal content.</a>
            <div class="cover-div">Swipe to Uncover</div>
        </div>
        <span class="ui-icon ui-icon-grid ui-icon-shadow">&nbsp;</span>
    </div>
</li>

然后,您可以为元素添加定位和背景样式:

CSS -

.cover-div {
    position   : absolute;
    top        : 0;
    left       : 0;
    width      : 100%;
    height     : 100%;
    z-index    : 2;
    background : #000;
    background : rgba(0, 0, 0, 0.7);
    color      : #fff;
}​

最后,您可以检测“封面”DIV上的滑动事件,并在屏幕外设置动画元素:

JS -

//when a page is initialized by jQuery Mobile, we'll do our own initialization
$(document).delegate('[data-role="page"]', 'pageinit', function () {

    //find all the `.cover-div` elements on this page and bind to swipe left/right events for the elements
    $(this).find('.cover-div').bind('swipeleft swiperight', function (event) {

        //if the user swiped to the left then animate the DIV to the left
        if (event.type == 'swipeleft') {
            $(this).stop().animate({ left : '-100%' }, 250);

        //otherwise animate the DIV to the right
        } else {
            $(this).stop().animate({ left : '100%' }, 250);
        }
    });
});
​

以下是演示:http://jsfiddle.net/pmqDf/1/