Я использую jQuery и пытаюсь анимировать поле <select>
, где ширина будет определяться самым длинным <option>
. Выбор заселяется ajax в зависимости от предыдущих выборов пользователей.animate select with dynamic options
Я могу анимировать <select>
просто отлично, но я не знаю, как определить ширину самого длинного <option>
. Любые идеи, как я могу это сделать, так что <select>
оживает до нужного размера?
Я пробовал делать это со статическими значениями, чтобы начать, но все еще не могу понять, как определить ширину, в которой мне нужно анимировать.
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("select").animate({width:"what goes here?","slow");
});
});
</script>
<select id = "mySelect" style = "width: 0px;">
<option value = "yes">Yes</option
<option value = "no">no</option>
<option value = "this is extra long text">this is extra long text</option>
</select>
--edit-- Вот JQuery я закончил, чтобы объяснить suckage Ie7 в
<script type="text/javascript">
$.ajaxSetup ({
cache: false// Disable caching of AJAX responses
});
$("document").ready(function(){
$("#btn").click(function(){
w = $("#mySelect").width();
$.ajax({
url: "../ajax/optionTest.cfm",
context: document.body,
success: function(data){
$("#mySelect").css("width",w);
$("#mySelect").html(data);
if($("#mySelect option").width() > 0){
$("#mySelect").animate({width:$("#mySelect option").width()},"slow");
}else{
$("#mySelect").css("visibility","hidden");
$("#mySelect").css("width","auto");
newWidth = $("#mySelect").width();
$("#mySelect").css("width",w+4);
$("#mySelect").css("visibility","visible");
$("#mySelect").animate({width:newWidth},"slow");
};
}
});
});
});
</script>
большинство браузеров автоматически это сделать для вас, до определенного предела. Вы можете зацикливаться на $ («option»). Width() –
Возможно, вам захочется сделать некоторые вычисления на основе '.length' самого длинного свойства (найденного в цикле), некоторые пробные и ошибки в этом случае, я просто могу сейчас не нужно проводить надлежащее тестирование. –
@crolpa - к сожалению, ширина элементов 'option' равна нулю первоначально – sje397