【问题标题】:1 line of code (console.log), two emplacement in the code = two results differents1 行代码(console.log),代码中的两个位置 = 两个结果不同
【发布时间】: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


【解决方案1】:

我认为你确实得到了一个对象。这只是浏览器显示事物的方式。

试试这个:

console.log($('.page_container')[3].id);

【讨论】:

  • 谢谢,它有效。我不知道为什么很难,因为当我之前尝试这个时它返回给我'未定义';)谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
相关资源
最近更新 更多