javascript - 修改由 jQuery 创建的输入
问题描述
我想用 jQuery 创建 html 对象,然后通过 jQuery/javascript 再次删除它们,但我遇到了问题,因为加载页面时这些对象不存在。您对我如何解决此问题有任何想法吗?提前致谢。
(这是我在 stackoverflow 上的第一篇文章 - 我希望我做的一切都是正确的 ^^)
https://jsbin.com/yudamofoho/edit
<body>
<div id='ipt-list'>
</div>
<input type="submit" id="btn-add" value="Add">
</body>
function rmInput(){
$(this).parent().remove();
return false;
}
$(function(){
$('#btn-add').on('click', function(){
ipt = '<div><input type="text" value=""><input type="submit" onclick="rmInput();" class="btn-rm" value="Remove"></div>';
$('#ipt-list').append(ipt);
return false;
});
});
解决方案
您必须传递this
给函数,以便您可以在函数内部引用它:
onclick="rmInput(this);"
function rmInput(el){
//console.log(this.constructor.name); // Window
$(el).parent().remove();
return false;
}
$(function(){
$('#btn-add').on('click', function(){
ipt = '<div><input type="text" value=""><input type="submit" onclick="rmInput(this);" class="btn-rm" value="Remove"></div>';
$('#ipt-list').append(ipt);
return false;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='ipt-list'>
</div>
<input type="submit" id="btn-add" value="Add">
推荐阅读
- html - 在 CSS 中使用伪元素来分隔段落有什么问题吗?
- google-chrome - SVG 在 Firefox 中首次加载时没有动画
- c# - 如何调试从用 Borland C++Builder 编写的外部 exe 启动的 C# 程序
- ajax - 错误:嵌套异常是 java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonMerge
- reactjs - 无法分配给“状态”,因为它是常量或只读属性
- javascript - Heroku 没有找到我的 index.js,但是我的 index.js 有效地在我的目录中
- sql-server - 无法使用具有只读的 Listerner 地址访问 SQL Server
- javascript - 完整日历如果特定月份没有事件,日历将在下个月自动加载
- apache-spark-sql - sparkSql没有这样的方法错误
- javascript - 带有 forEach 的多个按钮,同时还访问 onClick 句柄 ReactJS