position()被视为一个函数

时间:2014-10-10 22:34:04

标签: javascript jquery slider

我正在使用滑块,这是代码:

$(document).ready(function() {
            // MAKE SLIDER WIDTH EQUAL TO ALL SLIDES WIDTH
    var totalWidth = 0;
    $('.slide').each(function() {
        totalWidth = totalWidth + $(this).outerWidth(true);
    });
    var maxScrollPosition = totalWidth - $(".slider_wrap").outerWidth();

    function slideMove($targetSlide) {
        if ($targetSlide.length) {
            var newPosition = $targetSlide.position().left;
            if (newPosition <= maxScrollPosition ) {
                $targetSlide.addClass('slide--active');
                $targetSlide.siblings().removeClass("slide--active");
                $(".slider").animate({
                    left : - newPosition
                });
            }
            else {
                $(".slider").animate({
                    left : - maxScrollPosition
                });
            };
        };
    };
    $(".slide").width(totalWidth);

    $(".slide:first").addClass("slide--active");
    $(".next_post").click(function(){
        var $targetItem = $(".slide--active").prev();
        slideMove('.slide');
    });
    $(".prev_post").click(function(){
        var $targetItem = $(".slide--active").next();
        slideMove('.slide');
    });
    });

虽然我希望这会起作用,但我收到的错误是:TypeError:$ targetSlide.position未定义。来自函数slideMove中的if语句。为什么这不起作用?我仍在学习jQuery,如果这是一个明显的答案,那就很抱歉。

2 个答案:

答案 0 :(得分:1)

更改此

slideMove('.slide');

到这个

slideMove($('.slide'));

在你的方法slideMove中,你期待一个JQUERY DOM ELEMENT,因为你只给它一个STRING,它是特定DOM元素的类名

答案 1 :(得分:0)

YO!你把它改成了这个

...

$('.next_post').click(function(){
  var $targetItem = $('.slide--active').prev();
  slideMove($('.slide'));
});

$('.prev_post').click(function(){
  var $targetItem = $('.slide--active').next();
  slideMove($('.slide'));
});

...