scrollIntoView和焦点问题

时间:2013-10-04 06:08:34

标签: javascript php jquery zend-framework

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

请帮帮我。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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