javascript - jQuery 插件无法识别 .next()

标签 javascript jquery html plugins

我尝试创建一个简单的幻灯片插件,但它指出 .next() 不是一个函数。

未捕获类型错误:currSlider.next 不是函数 更改时 (jquery.methodSlider.js:11)

(function ( $ ) {

$('.res-slideshow').methodSlider({
    speed:3000
});
$.fn.methodSlider = function(options) {
    var settings = $.extend({
        speed:1000
    },options);
    this.find('li:first').addClass('top');

    var change = function(){
        var currSlider = this.find('li.top');
        //This doesnt work.
        var nextSlider = currSlider.next();

        nextSlider.addClass('top');
        currSlider.removeClass('top');
    }
    setInterval(change, settings.speed);
    return this;
};

}( jQuery ));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="residence-slider">
    <ul class="res-slideshow">
        <li>
          <img src="img/site_images/home-01.jpg" alt="This is image 1">
        </li>
        <li>
          <img src="img/site_images/home-02.jpg" alt="This is image 2">
        </li>
        <li>
          <img src="img/site_images/home-03.jpg" alt="This is image 3">
        </li>            
    </ul>
</div>

最佳答案

正如安德烈亚斯所说,问题来自于你的这个使用。

This不是你使用的dom元素,在jQuery中,你必须在前面添加一个$,所以它是$(this)> 获取元素。

在您的情况下,由于 this 不是元素,因此 next() 函数不可用。

我更新了您的代码如下:

(function ( $ ) {


$.fn.methodSlider = function(options) {
    var settings = $.extend({
        speed:1000
    },options);
    $(this).find('li:first').addClass('top');
    
    var that = $(this);
    var change = function(){
        var currSlider = that.find('li.top');
        var nextSlider = currSlider.next();

        nextSlider.addClass('top');
        currSlider.removeClass('top');
    }
    setInterval(change, settings.speed);
    return this;
};

$('.res-slideshow').methodSlider({
    speed:3000
});

}( jQuery ));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="residence-slider">
    <ul class="res-slideshow">
        <li>
          <img src="img/site_images/home-01.jpg" alt="This is image 1">
        </li>
        <li>
          <img src="img/site_images/home-02.jpg" alt="This is image 2">
        </li>
        <li>
          <img src="img/site_images/home-03.jpg" alt="This is image 3">
        </li>            
    </ul>
</div>

关于javascript - jQuery 插件无法识别 .next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45206957/

相关文章:

javascript - 如何使用 javascript 检查和更改输入的值

javascript - 如何使用AJAX获取oAuth参数?

javascript - 更改交换中所选值的文本大小

html - 图像显示在内容之上

javascript - 在 Post 方法后重定向,expressjs

Javascript 返回 false,警报不起作用

javascript - 访问 ShadowRoot 或 DOM(例如 querySelector)v 缓存变量对性能的影响?

javascript - jQuery UI 子菜单中的输入字段不起作用

javascript - 为 <p> 元素设置长度限制

javascript - 为什么从书签执行js片段时所有样式都丢失了?