滚动视图和焦点出现问题


Issue with scrollIntoView and focus

var mediaIdForFocus = '<?php echo $this->mediaIdForFocus; ?>';
if(mediaIdForFocus)
$('#flagimg'+mediaIdForFocus).get(0).scrollIntoView().addClass("selectedMedia"); // highlight class
$('.logoTxt').focus();

我正在尝试调整div $('#flagimg'+mediaIdForFocus)的滚动,然后将焦点放在元素上$('.logoTxt')

滚动视图调整为元素$('#flagimg'+mediaIdForFocus)$('.logoTxt').focus();没有提供焦点。它只发生在第一次。如果我刷新页面,它会按预期工作。

请帮助我。

要将元素平滑地滚动到视图中并将焦点设置为该元素,您可以执行以下操作:

elm.scrollIntoView({behavior: 'smooth', block: 'center'});
elm.focus({preventScroll: true});

$(document).scrollTop(0);做到了

代码给出如下

// for setting the focus to selected media if it is chosen from media page.
var mediaIdForFocus = '<?php echo $this->mediaIdForFocus; ?>';
if(mediaIdForFocus)
   $('#flagimg'+mediaIdForFocus).get(0).scrollIntoView(); // highlight class
$(document).scrollTop(0);

问题可能是代码行$('#flagimg'+mediaIdForFocus).get(0).scrollIntoView().addClass("selectedMedia");

.get(0)返回普通元素,因此 jQuery 包装器消失了。 .addClass()是一个jQuery函数,那么在纯元素上执行jQuery函数是不可能的。

因此,首先添加类,然后在视图中滚动元素: $('#flagimg'+mediaIdForFocus).addClass("selectedMedia").get(0).scrollIntoView();