2012-06-28 61 views
0

我有这个jQuery JS提琴工作正常在FF 13,但不是在IE7/8/9和Chrome。 。jQuery scrollTop在<select>是不是在铬和IE工作

http://jsfiddle.net/kj9p4/114/

基本上,我想输入一个文本框和滚动到列表中的项目,其中有我刚键入的值这是HTML:

<input type="text" name="t" id="t" /> 
</br>  
<select size="3"> 
     <option value="1">value 1</option> 
     <option value="2">value 2</option> 
     <option value="3">value 3</option> 
     <option value="4">value 4</option> 
     <option value="5">value 5</option> 
     <option value="6">value 6</option> 
     <option value="7">value 7</option> 
     <option value="8">value 8</option> 
     <option value="9">value 9</option> 
     <option value="10">value 10</option>    
<select> 

和这是JS:

$(document).ready(function(){ 
    $("#t").keyup(function() { 
     scrollToElement();     
    }); 
}); 


function scrollToElement(){ 
    var $s = $('select'); 
    var v = $("#t").val(); 

    var ele = $s.find('[value="'+v+'"]'); 
    var optionTop = $s.find('[value="'+ v +'"]').offset().top;  
    var selectTop = $s.offset().top;  
    $s.scrollTop($s.scrollTop() + (optionTop - selectTop)); 
} 

有没有人体验过相同的体验?为什么jQuery不适用于Chrome和IE?

+0

相关:HTTP: //stackoverflow.com/questions/4240385/getting-the-height-of-an-option-element-with-javascript/4240492#4240492。基本上没有一个选项元素的偏移。 – pimvdb

回答

0

“基本上,我想输入一个文本框和滚动到列表中的项目,其中有我刚键入的值”下面的代码将满足您的需要

$(document).ready(function(){ 
    $("#t").keyup(function() { 
     scrollToElement();     
    }); 
}); 


function scrollToElement(){ 
    var s = $('select'); 
    var t =$('#t').val(); 
    var option = t - 1; 
    s.find('option:eq('+option+')').attr('selected','selected'); 
} 
+0

如果仅仅是滚动,这可能会更好一点:http://jsfiddle.net/kj9p4/117/。 – pimvdb

相关问题