Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
从jQuery集合中提取和操作对象_Jquery_Object_Collections_Reference - Fatal编程技术网

从jQuery集合中提取和操作对象

从jQuery集合中提取和操作对象,jquery,object,collections,reference,Jquery,Object,Collections,Reference,我使用jQuery创建了一个典型的列表项集合,如下所示: HTML 我想做的是识别收藏中当前可见的幻灯片,然后从该幻灯片过渡到下一张幻灯片 我以为下面的方法行得通™ 但$current变量不是对象引用,而是保存目标幻灯片标记的字符串文字: jQuery 我不明白我做错了什么 我希望上面的内容能为我在集合中选择的对象提供一个唯一的引用,但我不明白为什么jQuery在这里不能这样工作,于是决定给我一个字符串。试试看 $(function() { var $slides = $('#slide

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

HTML

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

我以为下面的方法行得通™ 但$current变量不是对象引用,而是保存目标幻灯片标记的字符串文字:

jQuery

我不明白我做错了什么

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

试试看

$(function()
{
    var $slides = $('#slides li');
    var $current = $($slides[0]);
    console.log($current); 
});
$'slides li'和$'slides'之间的区别是,首先选择所有li对象,而第二个仅选择整个ulslides作为对象,因此您无法访问第一个li作为$slides[0],因为它将始终返回ul对象。

请尝试

$(function()
{
    var $slides = $('#slides li');
    var $current = $($slides[0]);
    console.log($current); 
});
$'slides li'和$'slides'之间的区别是首先选择所有li对象,而第二个仅选择整个ulslides作为对象,因此您无法访问第一个li作为$slides[0],因为它将始终返回ul对象。

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

查看的控制台输出。

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


查看的控制台输出。

试着这样做:

 var $slides = $('#slides li');
 var $current = $slides[0];
您可以像这样操作当前幻灯片,例如:

 $($current).fadeOut();
编辑:刚刚看到迪佩什·帕尔玛的回答,你也可以这样做


请不要忘记,您使用的是字符串,如果需要jquery将该字符串作为对象使用,请将其放入$

中,尝试如下操作:

 var $slides = $('#slides li');
 var $current = $slides[0];
您可以像这样操作当前幻灯片,例如:

 $($current).fadeOut();
编辑:刚刚看到迪佩什·帕尔玛的回答,你也可以这样做


请不要忘记,您使用的是字符串,如果需要jquery使用该字符串作为对象,请将其放入$

我在试图从现有代码中提取特定问题时犯了一个错误,因为选择器确实应该是$'slides li'。我现在已经更新了OP。@markedup,但实际上变化不大;您在控制台中看到的仍然是浏览器对元素的表示—您的变量确实直接引用元素,它不是字符串。但是如果我尝试执行类似$current.fadeOut的操作,则会出现“unsupported method”错误。Dipesh的方法和我预期的一样。@markedup因为.fadeOut是对jQuery对象调用的jQuery方法,执行$slides[0]返回实际的DOM元素,而不是jQuery对象。如果希望将特定元素包装在jQuery对象中,请使用.eq。Dipesh的答案是有效的,因为他将其包装为jQuery对象,但是如果您使用正确的jQuery函数来执行您想要执行的操作,那么这是不必要的。啊,明白了。以前没有使用过.eq,但我现在也可以看到它是如何工作的。非常感谢。我在试图从现有代码中提取特定问题时犯了一个错误,因为选择器应该是$'slides li'。我现在已经更新了OP。@markedup,但实际上变化不大;您在控制台中看到的仍然是浏览器对元素的表示—您的变量确实直接引用元素,它不是字符串。但是如果我尝试执行类似$current.fadeOut的操作,则会出现“unsupported method”错误。Dipesh的方法和我预期的一样。@markedup因为.fadeOut是对jQuery对象调用的jQuery方法,执行$slides[0]返回实际的DOM元素,而不是jQuery对象。如果希望将特定元素包装在jQuery对象中,请使用.eq。Dipesh的答案是有效的,因为他将其包装为jQuery对象,但是如果您使用正确的jQuery函数来执行您想要执行的操作,那么这是不必要的。啊,明白了。以前没有使用过.eq,但我现在也可以看到它是如何工作的。非常感谢,谢谢,迪佩斯。我的意思是$'slides li',但在这里试图使代码简洁时犯了一个错误。谢谢,迪佩什。我的意思是$'slides li',但在试图使代码简洁时犯了一个错误。它不是字符串,而是元素。它不是字符串,而是元素。