Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery插件帮助…需要添加我自己的功能_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript Jquery插件帮助…需要添加我自己的功能

Javascript Jquery插件帮助…需要添加我自己的功能,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在尝试将我自己的功能添加到jQuery插件中,老实说,这并不顺利,我正在使用来自的easySlider 1.7 我的想法是使用分页版本,上面链接的站点上有一个例子,但是当用户单击一个编号的链接时,我希望它跳到该幻灯片保持,然后继续。下面是我的尝试,我将发布整个插件,并围绕我理解的部分和我添加的部分发表评论 /* * Easy Slider 1.7 - jQuery plugin * written by Alen Grakalic

我正在尝试将我自己的功能添加到jQuery插件中,老实说,这并不顺利,我正在使用来自的easySlider 1.7

我的想法是使用分页版本,上面链接的站点上有一个例子,但是当用户单击一个编号的链接时,我希望它跳到该幻灯片保持,然后继续。下面是我的尝试,我将发布整个插件,并围绕我理解的部分和我添加的部分发表评论

          /*
         *  Easy Slider 1.7 - jQuery plugin
         *  written by Alen Grakalic    
         *  http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding
         *
         *  Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
         *  Dual licensed under the MIT (MIT-LICENSE.txt)
         *  and GPL (GPL-LICENSE.txt) licenses.
         *
         *  Built for jQuery library
         *  http://jquery.com
         *
         */

        /*
         *  markup example for $("#slider").easySlider();
         *  
         *  <div id="slider">
         *      <ul>
         *          <li><img src="images/01.jpg" alt="" /></li>
         *          <li><img src="images/02.jpg" alt="" /></li>
         *          <li><img src="images/03.jpg" alt="" /></li>
         *          <li><img src="images/04.jpg" alt="" /></li>
         *          <li><img src="images/05.jpg" alt="" /></li>
         *      </ul>
         *  </div>
         *
         */

        (function($) {

            $.fn.easySlider = function(options){

                // default configuration properties
                var defaults = {            
                    prevId:         'prevBtn',
                    prevText:       'Previous',
                    nextId:         'nextBtn',  
                    nextText:       'Next',
                    controlsShow:   true,
                    controlsBefore: '',
                    controlsAfter:  '', 
                    controlsFade:   true,
                    firstId:        'firstBtn',
                    firstText:      'First',
                    firstShow:      false,
                    lastId:         'lastBtn',  
                    lastText:       'Last',
                    lastShow:       false,              
                    vertical:       false,
                    speed:          800,
                    auto:           false,
                    pause:          2000,
                    continuous:     false, 
                    numeric:        false,
                    numericId:      'controls'
                }; 

                var options = $.extend(defaults, options);  

                this.each(function() {  
                    var obj = $(this);              
                    var s = $("li", obj).length;
                    var w = $("li", obj).width(); 
                    var h = $("li", obj).height(); 
                    var clickable = true;
                    obj.width(w); 
                    obj.height(h); 
                    obj.css("overflow","hidden");
                    var ts = s-1;
                    var t = 0;
                    $("ul", obj).css('width',s*w);          

                    if(options.continuous){
                        $("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
                        $("ul", obj).append($("ul li:nth-child(2)", obj).clone());
                        $("ul", obj).css('width',(s+1)*w);
                    };              

                    if(!options.vertical) $("li", obj).css('float','left');

                    if(options.controlsShow){
                        var html = options.controlsBefore;              
                        if(options.numeric){
                            html += '<ol id="'+ options.numericId +'"></ol>';
                        } else {
                            if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
                            html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
                            html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
                            if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';              
                        };

                        html += options.controlsAfter;                      
                        $(obj).after(html);                                     
                    };
    /**************************
    This section creates the numbered list that the user can click, clicking a numbered link pauses the slider
    *******************/    
        if(options.numeric){                                    
                        for(var i=0;i<s;i++){                       
                            $(document.createElement("li"))
                                .attr('id',options.numericId + (i+1))
                                .html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
                                .appendTo($("#"+ options.numericId))
                                .click(function(){                          
                                    animate($("a",$(this)).attr('rel'),true);
                                });                                                 
                        };                          
                    } else {
                        $("a","#"+options.nextId).click(function(){     
                            animate("next",true);
                        });
                        $("a","#"+options.prevId).click(function(){     
                            animate("prev",true);               
                        }); 
                        $("a","#"+options.firstId).click(function(){        
                            animate("first",true);
                        });             
                        $("a","#"+options.lastId).click(function(){     
                            animate("last",true);               
                        });             
                    };
/*The following code is my attempt to play and pause, the first created element is meant to stop the animation, but it just send it back to the first slide, the second created element, takes it to the second slide, I was hope one would pause and the other would play from the current slide****/
                    $(document.createElement("a"))
                        .attr('id', 'stop')
                        .html('<a>S</a>')
                        .appendTo($("#"+ options.numericId))
                        .click(function(){                          
                            //animate("first", true)
                            alert(defaults.continuous)
                            alert(defaults.auto)
                            animate(false)
                        });

                        $(document.createElement("a"))
                            .attr('id', 'stop')
                            .html('<a>P</a>')
                            .appendTo($("#"+ options.numericId))
                            .click(function(){                          
                                //animate("first", true)
                                alert(defaults.continuous)
                                alert(defaults.auto)
                                animate(true)
                            });

                    function setCurrent(i){
                        i = parseInt(i)+1;
                        $("li", "#" + options.numericId).removeClass("current");
                        $("li#" + options.numericId + i).addClass("current");
                    };

                    function adjust(){
                        if(t>ts) t=0;       
                        if(t<0) t=ts;   
                        if(!options.vertical) {
                            $("ul",obj).css("margin-left",(t*w*-1));
                        } else {
                            $("ul",obj).css("margin-left",(t*h*-1));
                        }
                        clickable = true;
                        if(options.numeric) setCurrent(t);
                    };

                    function animate(dir,clicked){
                        if (clickable){
                            clickable = false;
                            var ot = t;             
                            switch(dir){
                                case "next":
                                    t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1;                       
                                    break; 
                                case "prev":
                                    t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1;
                                    break; 
                                case "first":
                                    t = 0;
                                    break; 
                                case "last":
                                    t = ts;
                                    break; 
                                default:
                                    t = dir;
                                    break; 
                            };  
                            var diff = Math.abs(ot-t);
                            var speed = diff*options.speed;                     
                            if(!options.vertical) {
                                p = (t*w*-1);
                                $("ul",obj).animate(
                                    { marginLeft: p }, 
                                    { queue:false, duration:speed, complete:adjust }
                                );              
                            } else {
                                p = (t*h*-1);
                                $("ul",obj).animate(
                                    { marginTop: p }, 
                                    { queue:false, duration:speed, complete:adjust }
                                );                  
                            };

                            if(!options.continuous && options.controlsFade){                    
                                if(t==ts){
                                    $("a","#"+options.nextId).hide();
                                    $("a","#"+options.lastId).hide();
                                } else {
                                    $("a","#"+options.nextId).show();
                                    $("a","#"+options.lastId).show();                   
                                };
                                if(t==0){
                                    $("a","#"+options.prevId).hide();
                                    $("a","#"+options.firstId).hide();
                                } else {
                                    $("a","#"+options.prevId).show();
                                    $("a","#"+options.firstId).show();
                                };                  
                            };              

                            if(clicked) clearTimeout(timeout);
                            if(options.auto && dir=="next" && !clicked){;
                                timeout = setTimeout(function(){
                                    animate("next",false);
                                },diff*options.speed+options.pause);
                            };

                        };

                    };
                    // init
                    var timeout;
                    if(options.auto){;
                        timeout = setTimeout(function(){
                            animate("next",false);
                        },options.pause);
                    };      

                    if(options.numeric) setCurrent(0);

                    if(!options.continuous && options.controlsFade){                    
                        $("a","#"+options.prevId).hide();
                        $("a","#"+options.firstId).hide();              
                    };              

                });

            };

        })(jQuery);
很明显,我的尝试有点偏离了方向,如果有人能给我一个正确的方向,我将非常感激


感谢为链接或传递到滑块的整个元素添加悬停侦听器,当用户单击或悬停时,您可以清除自动前进超时。当他们离开时,您可以再次设置超时并继续

这样的东西会对整个元素起作用:

obj.hover(function() {
    clearTimeout(timeout);
}, function() {
    timeout = setTimeout(function(){
        animate("next",false);
    }, 2000);
});
你可以把它放在211线附近,它应该能工作。这就是你要找的吗?或者您希望它仅在他们单击链接后暂停,然后等待他们离开链接

如果是这种情况,您可以使用上述代码,但需要做一些更改:

摆脱第一次clearTimeouttimeout;这样,当您将鼠标悬停在滑块上时,它不会暂停。 通过更改var超时来添加全局变量;要查看var超时,请单击链接PausedSlider;。 在动画功能中,设置linkClickPausedSlider=clicked。 如果linkClickPausedSlider==true,则将我给您的代码更改为仅当用户悬停时设置超时,并在设置超时时将linkClickPausedSlider设置为false。
那里。。。这应该是一个详尽的答案。希望这对你有帮助。祝你快乐

为链接或传递到滑块的整个元素添加悬停侦听器,当用户单击或悬停时,可以清除自动前进超时。当他们离开时,您可以再次设置超时并继续

这样的东西会对整个元素起作用:

obj.hover(function() {
    clearTimeout(timeout);
}, function() {
    timeout = setTimeout(function(){
        animate("next",false);
    }, 2000);
});
你可以把它放在211线附近,它应该能工作。这就是你要找的吗?或者您希望它仅在他们单击链接后暂停,然后等待他们离开链接

如果是这种情况,您可以使用上述代码,但需要做一些更改:

摆脱第一次clearTimeouttimeout;这样,当您将鼠标悬停在滑块上时,它不会暂停。 通过更改var超时来添加全局变量;要查看var超时,请单击链接PausedSlider;。 在动画功能中,设置linkClickPausedSlider=clicked。 如果linkClickPausedSlider==true,则将我给您的代码更改为仅当用户悬停时设置超时,并在设置超时时将linkClickPausedSlider设置为false。 那里。。。这应该是一个详尽的答案。希望这对你有帮助。祝你快乐