像往常一样,这里的坏浏览器是 IE 6 及更低版本,因为它在选择选项上有这个只读的东西,所以处理它的唯一方法是替换整个选择。
索引.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>lazy loading thing</title>
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/script.js" type="text/javascript"></script>
</head>
<body>
<form>
<p>
<span id="replaceMe"><select name="drinks">
<option>oh well... click me...</option>
</select></span>
</p>
</form>
</body>
</html>
脚本.js
$(function() {
$('#replaceMe').one('click', replaceIt);
});
function replaceIt(e) {
$(this).html('now wait...');
$.post('options.php', {}, replaceItHandler, 'json');
}
function replaceItHandler(options) {
var select = '<select name="drinks">';
$.each(options, function(i, option) {
select += '<option value="' + option.data + '">' + option.label + '</option>';
});
select += '</select>';
$('#replaceMe').html(select);
}
选项.php
<?php
$options[] = array('data' => 0, 'label' => 'Water');
$options[] = array('data' => 0, 'label' => 'Wine');
$options[] = array('data' => 0, 'label' => 'Beer');
$options[] = array('data' => 0, 'label' => 'Coke');
echo json_encode($options);
?>
很明显,您可以使用 PHP 或类似的 JSON 或发送整个选择,这是您的选择。