使用DOM中的.scroll()函数和.find(选择器)将偏移量添加到jquery位置
我使用下面的代码在单击按钮后滚动到DOM中的文本区域并聚焦光标。它很好用使用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
$(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可以正常工作,没有跳跃。