单击时,.offset()会多次触发

时间:2016-09-30 12:52:08

标签: jquery

点击header.top后,我希望position:absolute成为.icon-search

但我还想计算当前位置(因为它是固定的)并用+ position: absolute将其覆盖到当前属性。

但是当我执行此操作时,它会多次触发$header.offset()console.log($currentPos.top),这会导致我的currentPos.top在开始时正确,但随后突然变为0。

控制台日志中的示例:

1800 0 0 0

当我离开覆盖部分时,控制台日志将显示:

(6)1800

因此,由于某种原因,它会激活6次该功能。

var $header = $('header.top');
$document.on('click', '.icon-search', function () {

    $currentPos = $header.offset();
    console.log($currentPos.top);

    $header.css("position", "absolute");
    $header.css("top", "currentPos.top");

    $searchBtn.off('click');
    $searchContainer.addClass('search-open');
    $input.val("");
    $input.focus();
});

注意:这是放在滚动函数中,也许这与它有关?

    $document.on('scroll', function()
    {
        if ($document.scrollTop() > 20)
        {
          //function here
        }
    }

0 个答案:

没有答案