javascript - Jquery:如何获取元素的父 div 并克隆它?
问题描述
单击 addField_1 按钮时,我必须克隆容器 div(id = 'projection') 并将其附加到它的正下方。
我这样做是jquery
这样的:
$('[id^="addField"]').click(() => {
var containerDiv = $(this).parent();
console.log(containerDiv.attr('id'));
containerDiv.after(containerDiv.clone());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row" id="projection" >
<select class="form-control" aria-placeholder="Select field"></select>
<button type="button" class="btn btn-light" id="addField_1" name="mybutton">+</button>
</div>
单击按钮时没有错误。但是 div 没有被复制。我还尝试记录父 div 的 ID。它也是未定义的。请告诉我我做错了什么。
解决方案
请注意,您使用了箭头功能,因为它this
指的是window
.
有两种解决方案:
1. 使用event.target
箭头函数获取目标元素。
$('[id^="addField"]').click((event) => {
let containerDiv = $(event.target).parent();
console.log(containerDiv.attr('id'));
containerDiv.after(containerDiv.clone());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row" id="projection" >
<select class="form-control" aria-placeholder="Select field"></select>
<button type="button" class="btn btn-light" id="addField_1" name="mybutton">+</button>
</div>
2.不使用箭头函数而是匿名函数并使用this
:
$('[id^="addField"]').click(function() {
let containerDiv = $(this).parent();
console.log(containerDiv.attr('id'));
containerDiv.after(containerDiv.clone());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row" id="projection" >
<select class="form-control" aria-placeholder="Select field"></select>
<button type="button" class="btn btn-light" id="addField_1" name="mybutton">+</button>
</div>
推荐阅读
- reactjs - 在网格容器材质 UI 上对齐 4 个项目
- arrays - bash 将字符串拆分为数组
- python - Pandas 将数据附加到没有列名的每个新行
- neural-network - 使用共享分类器修改 3 个网络的训练函数
- vba - 从 Fortran 子例程创建 DLL 以在 Excel VBA 中使用
- python - 使用烧瓶将我通过 vuejs 收到的数据发送到 python 服务器
- r - 在 R 中对数据帧的两个不同列执行 MAD 计算
- c++ - 为什么全局数组在只读模式下不消耗内存?
- javascript - 如何用 Javascript 替换元素及其中的元素?
- perforce - 执行 p4 别名命令导致输出中的行顺序混乱