【发布时间】:2015-02-20 22:08:28
【问题描述】:
我遇到的问题是 jQuery 选择器为同一行代码返回了两个不同的答案:
console.log($('.page_container')[3]);
在我使用键盘箭头的导航功能中,此行将返回此 div 的内容,包括父级“.page_container”。 这正是我不想要的,因为我需要它作为一个对象。
function checkKey(e) {
var actualScroll = $('.main').scrollTop();
var scrollTo = $('.page_container').height();
console.log($('.page_container')[3]);
if (e.keyCode == '38' && working == false) {
working = true;
// up arrow
$(".main").animate({
scrollTop: actualScroll - scrollTo,
}, 1000, 'easeInOutExpo', function () {
working = false;
});
} else if (e.keyCode == '40' && working == false) {
working = true;
// down arrow
$(".main").animate({
scrollTop: actualScroll + scrollTo,
}, 1000, 'easeInOutExpo', function () {
working = false;
});
}
}
$(document).ready(function () {
//ArrowsNavigations
document.onkeydown = testArrows;
});
但在代码中的其他任何地方,它都会返回正常的东西,即具有所有原始属性的对象版本。
编辑:
这是fiddle,但我不明白为什么我没有相同的结果,无论如何,每当我选择整个“.page_container”数组时,我都会得到对象样本,但如果我选择一个这个数组的特定索引我会得到这个事件的 html。 在我的本地版本中,选择器仅在 checkKey 函数中调用时才返回 html 内容。
【问题讨论】:
-
创建一个小提琴或共享整个代码(包括这行代码的其他出现)。
-
typeof $('.page_container')[3]返回什么?它应该是“未定义”或“对象”。你想要 jQuery 包装的元素还是原生元素? -
这是fiddle,但我不明白为什么我没有相同的结果,无论如何,每当我选择整个“.page_container”数组时,我都会得到对象样本但是如果我选择这个数组的一个特定索引,我会得到这个事件的 html。在我的本地版本中,选择器仅在 checkKey 函数中调用时才返回 html 内容。
-
我认为你确实得到了一个对象。这只是浏览器显示事物的方式。试试这个:
console.log($('.page_container')[3].id); -
谢谢,它有效。我不知道为什么很难,因为当我之前尝试这个时它返回给我'未定义';)谢谢
标签: javascript jquery