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