Javascript 查找最近的元素并在元素之前插入
我有三个按钮可以克隆Javascript 查找最近的元素并在元素之前插入,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有三个按钮可以克隆div,它会在单击按钮之前显示div。当前,单击按钮时,div将出现在所有三个按钮之前。我需要点击按钮,仅在点击按钮之前插入div var toAppend=$('#appendFullWidthAll').children(); $('#showContent')。单击(函数(){ toAppend.clone().insertBefore('.show'); }); 测试内容 测试内容 测试内容 测试内容 点击这里 点击这里 点击这里 您正在插入类为show的任何
div
,它会在单击按钮之前显示div
。当前,单击按钮时,div
将出现在所有三个按钮之前。我需要点击按钮,仅在点击按钮之前插入div
var toAppend=$('#appendFullWidthAll').children();
$('#showContent')。单击(函数(){
toAppend.clone().insertBefore('.show');
});代码>
- 测试内容
- 测试内容
- 测试内容
- 测试内容
点击这里
点击这里
点击这里
您正在插入类为show
的任何元素之前,这是您的主要问题。解决方案是使用$(this)
选择器捕获您单击的元素,如下所示:
$('.btn').click(function() {
toAppend.clone().insertBefore($(this));
});
首先,HTML中的ID必须是唯一的。现在,要对引发事件的元素应用任何操作,请在事件内部使用关键字
this
。但是请记住,this
是一个JavaScript关键字,因此使用$(this)
将其转换为jQuery:
var toAppend=$('#appendFullWidthAll').children();
$('.show')。单击(函数(){
toAppend.clone().insertBefore(this);
});代码>
- 测试内容
- 测试内容
- 测试内容
- 测试内容
点击这里
点击这里
点击这里
您可以使用$(此)
选择器在单击事件侦听器中获取您单击的元素。另外,不要对多个元素使用相同的id
属性,我已使用show
类选择器替换了click
侦听器,而不是使用id
属性的错误侦听器。检查下一个示例:
$(文档).ready(函数()
{
var toAppend=$('#appendFullWidthAll').children();
$('.show')。单击(函数()
{
var clickedButton=$(此)
toAppend.clone().insertBefore(单击按钮);
});
});代码>
- 测试内容
- 测试内容
- 测试内容
- 测试内容
点击这里
点击这里
点击这里
请不要使用同一id三次。对于HTML页面,元素的id必须是唯一的。
请用这种方法来实现你的目标
var toAppend = $('#appendFullWidthAll').children();
$('.btn.show').click(function() {
const clickedButton = $(this);
toAppend.clone().insertBefore(clickedButton);
});
在一个页面上有多个ID是无效的HTML。将它们改为类,或者使用不同的id。这里有一些问题,首先是不要使用相同的id,如果你真的需要一组元素,请使用类。因此,在这里,如果您将每个按钮id更改为showContent1、showContent2和showContent3以及$('.btn')。单击(…这将起作用。您不需要在此上下文中将this
转换为jQuery,因为insertBefore()
方法也将采用this
。