Попробуйте связать с событием change
элемента <select>
. Вы также можете избежать повторения подобного кода, разложив фрагменты, которые превращаются в их собственный объект. Примерно так:
$('#comicselector').change( function(e){
var content = {
XKCD : "<iframe src='http://www.xkcd.com' width='900' height='600'></iframe>",
Happiness : "<iframe src='http://www.explosm.net/comics/' width='900' height='600'></iframe>",
SequentialArt : "<iframe id='SAFrame' src='http://www.collectedcurios.com/sequentialart.php' height='400' width='900'></iframe>",
Alien : "<iframe src='http://alienlovespredator.com/' width='900' height='600'></iframe>"
}
var which = $(this).find(':selected').attr('id'); // Get id of selected option
var iframe = content[which];
var iframeHeight = $(iframe).attr('height');
$("#comicspace")
.animate({height: iframeHeight },"slow")
.html( iframe ); // Get appropriate value from content object
});
Редактировать: Я только что понял, что вы используете ID каждого элемента опции. Соответственно изменил код - хотя почему бы просто не использовать значение в вашем HTML?
Обновление: После вашего комментария я извлекаю значение атрибута height
из каждой строки iframe. Похоже, вы просто выводите это значение, чтобы изменить высоту #comicspace
, поэтому нет смысла хранить его где-то дважды.