3
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();没有给出焦点。它只发生在第一次。如果我刷新页面,它会按预期工作。

请帮我。

4

3 回答 3

12

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

elm.scrollIntoView({behavior: 'smooth', block: 'center'});
elm.focus({preventScroll: true});
于 2019-12-14T18:06:51.493 回答
0

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

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

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

于 2013-10-04T07:04:32.773 回答
0

$(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);
于 2013-10-04T06:59:35.340 回答