元素尚未被浏览器解析时就运行(例如脚本置于 中且未包裹 $(document).ready()),$('#myDiv') 将返回空集合,后续操作静默失败。
// ❌ 危险:可能执行过早
$('#myDiv').append('<input type="text" name="dynamic_field">');
// ✅ 正确:确保 DOM 加载完成
$(document).ready(function() {
$('#myDiv').append('<input type="text" name="dynamic_field" placeholder="Added dynamically">');
});
// 或简写为:
$(function() {
$('#myDiv').append('<input type="text" name="dynamic_field">');
});
✅ 2. 选择器错误或 ID 重复
检查是否误写 #mydiv(大小写/拼写错误),或页面中存在多个 id="myDiv"(ID 必须唯一)。jQuery 只匹配第一个,其余被忽略。
✅ 3. 表单或 div 被动态移除/替换
若 #myDiv 后续被 .html()、.empty() 或第三方插件重置,之前注入的 input 会被清除——需在重渲染后重新注入,或改用事件委托绑定。
✅ 4. HTML 结构隐含错误(极易被忽视)
如原始示例中
<!-- ❌ 错误:重复 ID -->
✅ 5. 验证完整可运行示例
以下代码经实测在现代浏览器中 100% 正常工作(将 input 插入 #myDiv 内部):
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(function() {
// ✅ 成功:向 div 内部追加 input
$('#myDiv').append(
'<label><input type="checkbox" name="agree"> I agree'
);
// ✅ 也可 prepend 到 div 开头
$('#myDiv').prepend(
'<input type="hidden" name="timestamp" value="' + Date.now() + '">'
);
});
</script>
? 关键提醒:
jQuery 1.12.4
jQuery 1.12.4是jQuery 1.x系列的最后一个正式稳定版本,由jQuery团队于2016年发布。该版本主要面向需要兼容旧版浏览器环境的网站和Web应用,尤其适用于仍需支持Internet Explorer 6、Internet Explorer 7、Internet Explorer 8等老旧浏览器的项目。
下载
- 始终使用 $(document).ready()(或简写 $(function(){}))包裹 DOM 操作;
- 避免 ID 重复,优先用 class 处理批量元素;
- 使用浏览器开发者工具(Elements 面板)实时检查目标节点是否存在、是否被覆盖;
- 若需在 AJAX 加载后注入,确保在回调函数中执行,而非全局作用域。
只要遵循上述原则,$('#myDiv').append('') 不仅“能工作”,而且是生产环境中安全、标准的表单动态增强方式。