在Jquery中使用选择器而不是“this”

时间:2013-09-11 20:33:41

标签: javascript jquery

也许这是一个愚蠢的问题。但我真的无法理解。

我正在使用Jquery Cycle2。经过一些个性化后,我遇到了一个简单的问题。 我需要知道当前幻灯片的“索引”是什么。

在插件的网站上,我发现这行代码非常有用。

$('#cycle-1 .cycle-slide').click(function(){
    var index = $('#cycle-1').data('cycle.API').getSlideIndex(this);
    alert(index);
});

它给了我正确的索引。但是当我点击另一个元素时,我正试图捕获这个索引。所以我不能使用参数(this)。

然后我试了一下。

$('.anotherelement').click(function(){
    var mycycle = $('#cycle-1 .cycle-slide');
    var index = $('#cycle-1').data('cycle.API').getSlideIndex($(mycycle));
    alert(index);
});

它不会返回我当前的幻灯片索引。它返回“-1”。有谁知道我应该如何将Object(selector)作为参数传递给getSlideIndex()?

非常感谢:D

2 个答案:

答案 0 :(得分:0)

在第一段代码this中是DOM元素而不是jquery对象。试试这个:

var index = $('#cycle-1').data('cycle.API').getSlideIndex(mycycle[0]);

但是,据推测,您有多个.cycle-slide元素。这将是第一个。在您的第一个代码中,您可以访问单个代码,因为只有一个代码被单击。您需要在此决定要定位哪一个。

答案 1 :(得分:0)

您可以使用$('.cycle-slideshow').data('cycle.opts').currSlide获取当前幻灯片索引

$('.anotherelement').click(function(){
    var index = $('.cycle-slideshow').data('cycle.opts').currSlide;
    var currSliderNum = index+1;
    alert(currSliderNum);
    return false;
});

FIDDLE