1

我正在使用 jQuery 创建一个典型的列表项集合,如下所示:

HTML

<ul id="slides">
  <li>Slide 1</li>
  <li>Slide 2</li>
  <li>Slide 3</li>
  <li>Slide 4</li>
</ul>

jQuery

var $slides = $('#slides li');

然后我想做的是识别集合中当前可见的幻灯片,然后从该幻灯片过渡到下一张。

我认为以下内容将只是工作™,但该变量不是对象引用,而是$current包含目标幻灯片标记的字符串文字:

jQuery

var $current = $slides[0];
    console.log($current); // returns "<li>Slide 1</li>" and not [object]

我不明白我在这里做错了什么。

我希望上面的内容能给我一个对我在集合中选择的对象的唯一引用,但我不明白为什么 jQuery 在这里不能那样工作,而是决定给我一个字符串。

4

3 回答 3

1

尝试

$(function()
{
    var $slides = $('#slides li');
    var $current = $($slides[0]);
    console.log($current); 
});

$('#slides li')和之间的区别$('#slides')是首先选择所有li object而第二个只是选择整个ul#slidesobject所以你不能首先访问li$slides[0]因为它总是会返回ul object

于 2013-02-28T11:36:54.230 回答
0

对元素的引用。但是,您在控制台中看到的是该元素的依赖于浏览器的字符串表示形式——在本例中为outerHTML.

看看这个 jsFiddle 演示的控制台输出。

于 2013-02-28T11:37:50.080 回答
0

尝试这样做:

 var $slides = $('#slides li');
 var $current = $slides[0];

您可以像这样操作当前幻灯片,例如:

 $($current).fadeOut();

编辑:刚刚看到 Dipesh Parmar 的回答,你也可以这样做;)

只是不要忘记您使用的是字符串,如果您需要 jquery 使用该字符串,因为它是一个对象,请将其放入 $()

于 2013-02-28T11:40:19.247 回答