Jquery滚轮/切换效果

发布于 2024-10-11 12:14:55 字数 368 浏览 0 评论 0原文

我正在寻找 jquery 中的“滚轮切换”(最好使用插件)。如果我有以下 HTML:

<ul>
    <li>Option 1</li>
    <li>Option 2</li>
    <li>Option 3</li>
</ul>

我希望显示第一个选项并隐藏其他选项。每次我“点击/单击”一个选项时,它都会显示下一个选项,并在最后一个选项后循环到第一个选项。当在移动网络设备上使用时,我希望它能够响应向上/向下滑动事件并看起来像“滚轮”(即使用向上/向下滑动效果)。要求太多?希望不是,任何指点表示赞赏。

谢谢,

保罗

I'm looking for a "roller toggle" in jquery (ideally using a plugin). If I have the following HTML:

<ul>
    <li>Option 1</li>
    <li>Option 2</li>
    <li>Option 3</li>
</ul>

I would like the first option to be displayed and the others hidden. Each time I "tap/click" on an option it displays the next and loops around to the first one after the last one. When used on a mobile web device I'd like it respond to swipe up/down events and appear like a "roller" (i.e. using a slide up/down effect). Too much to ask? Hopefully not, any pointers appreciated.

Thanks,

Paul

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柠檬色的秋千 2024-10-18 12:14:55

如果您想编写自己的插件,这里有一个小示例可以帮助您开始

它的工作原理是这种标记

<ul id="test">
    <li>Option 1</li>
    <li>Option 2</li>
    <li>Option 3</li>
</ul>

然后这是插件代码(非常基本,但可以扩展)

(function($) {   
    $.fn.roller =  function(){

        this.children(':not(:first)').hide();

        this.children().click(function(){
            if($(this).next().length>0){
               $(this).hide().next().show();
            }
            else{
                $(this).hide().parent().children(':first').show();
            }
        });
    };
})(jQuery);

,它适用于这个想法:

1)隐藏除第一个孩子之外的所有孩子
2) 单击任何元素都会隐藏该元素并显示下一个元素(除非单击的元素是子元素列表中的最后一个元素,在这种情况下将显示第一个元素)。

最后使用以下代码实例化插件:

$('#test').roller();

jsFiddle: http://jsfiddle.net/jamiec/zpq3u/

Here is a little sample to get you started if you wish to write your own plugin

It works on the principle of this sort of markup

<ul id="test">
    <li>Option 1</li>
    <li>Option 2</li>
    <li>Option 3</li>
</ul>

Then this is the plugin code (pretty basic, but can be extended)

(function($) {   
    $.fn.roller =  function(){

        this.children(':not(:first)').hide();

        this.children().click(function(){
            if($(this).next().length>0){
               $(this).hide().next().show();
            }
            else{
                $(this).hide().parent().children(':first').show();
            }
        });
    };
})(jQuery);

That works on this idea:

1) Hide all but the first child
2) Clicking on any element hides that element and shows the next (unless the clicked element is the last in the list of children, in which case the first item is shown).

Finally the plugin is instantiated using this code:

$('#test').roller();

jsFiddle: http://jsfiddle.net/jamiec/zpq3u/

沫尐诺 2024-10-18 12:14:55

我认为您正在寻找的控件就是通常所说的“手风琴”。

jQuery UI 中有一个: http://jqueryui.com/demos/accordion/

对于特殊的东西就像滑动动作一样,我认为你必须自己抓住它们并决定如何处理它们。可以指示 jQuery UI 手风琴显示某个“选项卡”,如下所示:

$('#my-ul').accordion('activate', tabIndex);

I think the control you're looking for is what's commonly referred to as an accordion.

There is one in jQuery UI: http://jqueryui.com/demos/accordion/

For special stuff like swipe actions, I think you'd have to catch them yourself and decide what to do with them. The jQuery UI accordion can be instructed to show a certain 'tab' like so:

$('#my-ul').accordion('activate', tabIndex);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文