在以下示例中,警报显示,但 #message 为空白 。
如果我 注释掉 .insertAfter 行,那么 #message 将正确显示。
为什么 .insertAfter 在这个例子中不起作用?
Firebug 正好跨过它。
javascript:
google.load("jquery", "1.3.2");
//run when page is loaded
google.setOnLoadCallback(function() {
$('.languageChooser select').bind('click', function() {
var numberOfItems = $('.languageChooser select option:selected').length;
$('#message').hide().html("You have selected " + numberOfItems + " " + smartPlural('language',numberOfItems) + ".").fadeIn('slow');
if(numberOfItems == 1) {
$('#message').insertAfter('<div>Use the CTRL and SHIFT keys to select multiple items.</div>');
alert('here');
}
});
function smartPlural(itemName, numberOfItems) {
if(numberOfItems == 1) {
return itemName;
} else {
return itemName + 's';
}
}
});
html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
<title>Text XHTML Page</title>
<link href="css/main.css" rel="stylesheet" type="text/css" media="all"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="javascript/main.js"></script>
</head>
<body>
<div class="languageChooser">
<div class="title">Please choose a language:</div>
<select size="4" multiple="multiple">
<option>C#</option>
<option>Ruby</option>
<option>PHP</option>
<option>VB.NET</option>
<option>JavaScript</option>
<option>Scala</option>
</select>
<div id="message"></div>
</div>
</body>
</html>
最佳答案
insertAfter 仅适用于 DOM 上已经存在的元素,请查看文档:
您可能正在寻找 append 或 appendTo 吗?