Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
使用DOM中的.scroll()函数和.find(选择器)将偏移量添加到jquery位置_Jquery_Scroll_Focus - Fatal编程技术网

使用DOM中的.scroll()函数和.find(选择器)将偏移量添加到jquery位置

使用DOM中的.scroll()函数和.find(选择器)将偏移量添加到jquery位置,jquery,scroll,focus,Jquery,Scroll,Focus,我使用下面的代码在单击按钮后滚动到DOM中的文本区域并聚焦光标。它很好用 $(document).on('click', '.test-comment', function() { if (obj_test.u != '0') { var commentsform = $(this); if (!commentsform.hasClass('disabled')) { commentsform.addClass('disab

我使用下面的代码在单击按钮后滚动到DOM中的文本区域并聚焦光标。它很好用

    $(document).on('click', '.test-comment', function() {
    if (obj_test.u != '0') {
        var commentsform = $(this);
        if (!commentsform.hasClass('disabled')) {
            commentsform.addClass('disabled');
        } else {
            commentsform.removeClass('disabled');
        }

        $(this).closest('#post-' + $(this).data('post_id')).find('#masonry-meta-commentform-' + $(this).data('post_id')).scroll(function() {
            if ($('#post-masonry #masonry').length) {
                $('#post-masonry #masonry').masonry('reloadItems').masonry('layout');
            } else if ($('#masonry').length) {
                $('#masonry').masonry('reloadItems').masonry('layout');
            }
        }).find('textarea').focus();

        return false;
    } else {
    // do something

        return false;
    }
});

但它看起来像下图。如您所见,文本区域在我的桌面窗口的底部被剪切

有没有办法将偏移量(例如100px)设置为我的代码以进一步滚动?所以它看起来像下图,并保持聚焦功能?或者其他想法


您可以通过首先使用offset.top获得textarea的顶部,然后在其中添加textarea的高度来计算右滚动顶部,这样整个文本区域都可以在视图中滚动,如果您还需要在其下方包含按钮,则可以加上一些额外的距离,例如30

$(document).on('click', '.test-comment', function() {
if (obj_test.u != '0') {
    var commentsform = $(this);
    if (!commentsform.hasClass('disabled')) {
        commentsform.addClass('disabled');
    } else {
        commentsform.removeClass('disabled');
    }

    $(this).closest('#post-' + $(this).data('post_id')).find('#masonry-meta-commentform-' + $(this).data('post_id')).scroll(function() {
        if ($('#post-masonry #masonry').length) {
            $('#post-masonry #masonry').masonry('reloadItems').masonry('layout');
        } else if ($('#masonry').length) {
            $('#masonry').masonry('reloadItems').masonry('layout');
        }
    });//

    // HERE COMES YOUR SCROLLING CODE
    var $targetTextArea =  $(this).closest('#post-' + $(this).data('post_id')).find('#masonry-meta-commentform-' + $(this).data('post_id')).find('textarea');
    var textAreaTop = $targetTextArea.offset().top;
    var textAreaHeight = $targetTextArea.height();
    var scrollHeight = textAreaTop + textAreaHeight + 30; // added 30 to also include the submit button below the text area
    $("html, body").animate({"scrollTop": scrollHeight}, 500, function(){
        $targetTextArea.focus();
    });//animate()




    return false;
} else {
// do something

    return false;
}

})

很好。谢谢。在我的例子中-200而不是+30可以正常工作,没有跳跃。