Javascript 未显示时滚动至div顶部
我有一个满是打字搜索结果的分区。当typeahead绑定到的输入失去焦点时,我希望将具有typeahead结果的div滚动到最上面的位置 我正在使用,因此我目前有:Javascript 未显示时滚动至div顶部,javascript,jquery,typeahead,typeahead.js,Javascript,Jquery,Typeahead,Typeahead.js,我有一个满是打字搜索结果的分区。当typeahead绑定到的输入失去焦点时,我希望将具有typeahead结果的div滚动到最上面的位置 我正在使用,因此我目前有: $('input[name="customer"]').on('typeahead:closed', function(){ $('div.tt-dataset-customers').scrollTop(0); }); 然而,div永远不会滚动。我认为这是因为div被隐藏了,我也尝试过: $('inp
$('input[name="customer"]').on('typeahead:closed', function(){
$('div.tt-dataset-customers').scrollTop(0);
});
然而,div永远不会滚动。我认为这是因为div被隐藏了,我也尝试过:
$('input[name="customer"]').on('typeahead:open', function(){
$('div.tt-dataset-customers').scrollTop(0);
});
这也不管用
有没有办法在未显示的div上设置滚动位置
小提琴显示正在发生的事情:编辑v3 所以我在上面添加了一个
console.log
,它从未启动过
$('input[name="customer"]').on('typeahead:closed', function(){
console.log('test');
});
因此,我使用jQuery链,而不是将typeahead()
从on()
拆分,现在它触发typeahead:closed
。不要问我为什么它没有触发,仍然没有弄明白:(
无论如何,当你键入a
,向下滚动,单击外部,然后单击输入上的“上一步”时,这将起作用(在chrome v29上测试),列表将被备份
$('input[name="customers"]').typeahead({
local: ['a','ab','ac','ad','ae','af',
'ag','ah','ai','aj','ak','al',
'am','an','ao','ap','aq','ar',
'as','at','au','av','aw','ax',
'ay','az'
],
limit: 20,
name: 'customers',
rateLimitWait: 100,
ttl: 300
}).on('typeahead:closed keypress', function(){
console.log('test');
$('div.tt-dataset-customers').animate({
scrollTop: 0
}, 900);
});
p、 s:至少在fiddle上,jQuery2.X和typeahead在IE9上的两个Scriptp上都会出现错误(请参见控制台),如果您使用1.9(edge)
,那么它就可以工作了
V3:在监听的事件中添加了
keypress
,这样每当有人键入内容时,它都会尝试向上滚动(例如,包括键入a
、退格和键入b
).这有点麻烦,但你可以尝试将div大小调整为1px高度,并将不透明度更改为0。我不想隐藏一个已经隐藏的div,我想设置滚动位置。从技术上讲,你是在用我的建议取消隐藏。问题是,typeahead.js在呈现建议时不会触发事件。因此我没有我可以听的事件,以观察充满建议的div变得可见。它确实有“关闭”事件。在我的问题中,这可能不够清楚,但我想在div中设置滚动位置,而不是整个窗口。@tubaguy50035哦,对不起。我现在正在考虑这个问题。typeahead演示没有滚动,你有一个我可以看到滚动结果的演示?所以我可以测试和编辑答案。但这是一个问题就像这样。这不起作用。这里有一把小提琴,希望能说明问题所在:@tubaguy50035用你的小提琴更新了答案。如果你使用链接而不是自己调用on()
。@tubaguy50035很高兴能帮上忙=)