Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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
Javascript 使用一个链接激活两个jQuery函数_Javascript_Jquery_Html - Fatal编程技术网

Javascript 使用一个链接激活两个jQuery函数

Javascript 使用一个链接激活两个jQuery函数,javascript,jquery,html,Javascript,Jquery,Html,我正在努力做到以下几点: 使用滑动切换打开一个div 使用scrollTop将用户窗口移动到div的顶部 然后,当用户关闭div时,基本上会反转这个过程。 我几乎完成了整个过程,但我有一个问题。当我打开div时,我的窗口不会移动到div的顶部。但是当我关闭div时,我的窗口会移动到我想要的位置 以下是我的jQuery代码: // Find the location of a div (x, y) function divLoc(object) { var topCord = 0; // If

我正在努力做到以下几点:

使用滑动切换打开一个div 使用scrollTop将用户窗口移动到div的顶部 然后,当用户关闭div时,基本上会反转这个过程。 我几乎完成了整个过程,但我有一个问题。当我打开div时,我的窗口不会移动到div的顶部。但是当我关闭div时,我的窗口会移动到我想要的位置

以下是我的jQuery代码:

// Find the location of a div (x, y)
function divLoc(object) {
var topCord = 0;

// If browser supports offsetParent
if(object.offsetParent) {
    do {
        topCord += object.offsetHeight;
    } 
    while (object === object.offsetParent);

    return topCord;
}
}

$("#open").click(function () {
    var newInfo = document.getElementById("newInfo");
    var location = divLoc(newInfo);
    $("#newInfo").slideToggle('slow', function() {
        $('html,body').animate({ scrollTop: location }, 2000);
    });
});

我在JSFIDLE上上传了一个问题示例:

您需要更改幻灯片功能:

$("#newInfo").slideToggle('slow', function() {
  var self = $(this)       
  $('html,body').animate({ scrollTop: self.offset().top }, 2000);
});

您需要更改幻灯片功能:

$("#newInfo").slideToggle('slow', function() {
  var self = $(this)       
  $('html,body').animate({ scrollTop: self.offset().top }, 2000);
});

我认为您的while条件应该是object=object.offsetparents,这应该存在。它确保添加所有周围div的高度。当你说“然后基本上反转用户关闭div的过程”时,你希望scrollTop发生什么?返回窗口顶部?让它回到按钮位置吗?既然我得到了解决问题的答案,我现在就要添加[返回顶部]。@ChrisFrank同意,但是为了让while循环继续添加来自每个连续父对象的偏移量,每次通过循环时都需要将对象更新为上一次迭代的偏移父对象。这就是为什么我认为你的条件应该是object=object.offsetparents,我认为你的while条件应该是object=object.offsetparents,这应该存在。它确保添加所有周围div的高度。当你说“然后基本上反转用户关闭div的过程”时,你希望scrollTop发生什么?返回窗口顶部?让它回到按钮位置吗?既然我得到了解决问题的答案,我现在就要添加[返回顶部]。@ChrisFrank同意,但是为了让while循环继续添加来自每个连续父对象的偏移量,每次通过循环时都需要将对象更新为上一次迭代的偏移父对象。这就是为什么我认为你的条件应该是object=object.offsetparents谢谢你修复了它-克丽丝坦克斯修好了-克里斯