【问题标题】:Nicescroll in jQuery Mobile popupsjQuery Mobile 弹出窗口中的 Nicescroll
【发布时间】:2014-05-28 10:30:16
【问题描述】:

我一直在我的 jQuery Mobile 应用程序中使用出色的 NiceScroll 插件。我遇到的一个问题是当我在弹出窗口中使用 NiceScroll 时。当用户按 Esc 键关闭弹出窗口时,滚动条仍留在后面。 “没问题”我想——我将只记录滚动条对象并从弹出窗口的 popupafterclose 事件中调用它的 .remove() 方法。但是,有一个问题 - 只要滚动条存在(即使在实际弹出窗口消失之后),popupafterclose 事件就不会被触发。 jQM 文档状态

当弹窗完全从屏幕上消失时触发此事件,这意味着所有关联的动画都已完成。

因此,我所看到的意味着悬空的孤立滚动条相当于“所有关联的动画”没有完整。

作为权宜之计,我在一个数组中跟踪创建的 Nicescrolls,检查文档级别的 Esc 键并在该数组的最后一个元素上调用 remove()。这可行,但感觉相当hackish。我将非常感谢任何能够提出更好方法的人。

【问题讨论】:

  • 你能创建一个小提琴,以便我们可以看到生成的代码吗?也许您可以将滚动的 DOM 父级从正文更改为弹出窗口?
  • 是的,我将创建小提琴。滚动条是绝对定位的,因此那里的更改至少需要弹出主体相对定位。我玩弄了这样做的想法,但对以牺牲我自己为代价的完全不同的项目的前景犹豫不决。

标签: jquery-mobile popup nicescroll


【解决方案1】:

我为你做了一个不会遇到这个问题的工作示例。

工作示例:http://jsfiddle.net/Gajotres/N28Vg/83/

HTML:

<div data-role="page" id="index">
    <div data-theme="b" data-role="header" data-position="fixed">
        <h1>Index page</h1>
    </div>

    <div data-role="content">
        <a href="#popupBasic" data-rel="popup" data-role="button" data-inline="true" data-transition="pop">Basic Popup</a>
        <div data-role="popup" id="popupBasic">
            <div class="header" data-role="header">
                <h1>Products</h1>
            </div>
            <div class="content" data-role="content">
                <ul data-role="listview">
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>                
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>
                    <li><a href="#">Some link</a></li>                
                </ul>                
            </div>
            <div class="footer" data-role="footer">
                <a class="close" href="#" data-rel="back" data-role="button">Close</a>
            </div>
        </div>                
    </div>

    <div data-theme="b" data-role="footer" data-position="fixed">
        <h1>Footer</h1>
    </div>    
</div>    

JavaScript:

使用这个:

$(document).on('pageshow', '#index', function(){ 
    $(".content").niceScroll({cursorcolor:"#00F"});
});

或者这个:

$(document).ready(
    function() {
        $(".content").niceScroll({cursorcolor:"#00F"});
    }
);

【讨论】:

  • 谢谢@Gajotres。我试图抓住你所做的事情的精髓in this fiddle。除其他外,我想检查 popupafteropen/close 事件是否正确触发。我不确定你为什么需要 div.iscroll CSS 规则。如果您发现我的简化版解决方案有任何问题,请告诉我。从本质上讲,我认为您所做的是将滚动条移动到 inside 弹出窗口中的 div?
  • 忘记那个特定的 CSS 规则,它是一个遗留物。我还在弹出窗口中测试 iScrollView。
  • 谢谢@Gajtores。我已经接受了你的回答——当然比我编写的破解要好得多。如果你能评论我的简化版小提琴,我将不胜感激——你发现那里有什么问题吗?
  • 给我一些时间,我会给你发评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 2015-05-30
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多