Jquery 如何在另一个元素之前找到第一个元素
我需要得到一个元素的id,这个元素有无限的子元素的可能性。如果用户单击了这个(main元素)中的每个元素,那么我现在需要输入main元素的id,以便在该元素之前或之后插入一个新的div 范例Jquery 如何在另一个元素之前找到第一个元素,jquery,Jquery,我需要得到一个元素的id,这个元素有无限的子元素的可能性。如果用户单击了这个(main元素)中的每个元素,那么我现在需要输入main元素的id,以便在该元素之前或之后插入一个新的div 范例 <div id="contentholder" data-ownid="100"> ... - add here a new div on click at each of the children from the main-element <div id="999" data-owni
<div id="contentholder" data-ownid="100">
...
- add here a new div on click at each of the children from the main-element
<div id="999" data-ownid="1">
This is the main-element
<div id="a" data-ownid="2"></div>
<div id="b" data-ownid="3"><div><span id="d" data-ownid="5"></span></div></div>
<div id="c" data-ownid="4"><img id="f" data-ownid="6"...><span id="g" data-ownid="7"></span></div>
<img id="h" data-ownid="8"...>
</div>
- or add here a new div on click at each of the children from the main-element
...
</div>
...
-单击主元素中的每个子元素,在此处添加一个新的div
这是主要因素
-或者单击主元素中的每个子元素,在此处添加一个新的div
...
我知道要添加新的div
$('#ID').before('<div>newdiv</div>');
$('ID')。在('newdiv')之前;
及
$('#ID')。在('newdiv')之后//格式化
重要的是要知道,div id=999不是最后一个父级。它也是之前未知数量元素的子元素。所以我的搜索必须在这个分区停止才能得到这个ID
也许这是一种查找id=contentholder的div之前的最后一个父级的方法?
contentholder是此集合所有内容的最后一个父级
如何通过单击嵌套元素来获取主元素的ID
非常感谢。如果所需元素具有
id
s,则可以使用[id]
选择器
$(文档)。在('click','*:not([id])上,函数(e){
e、 停止传播();
console.log($(this).closest('[id]')).attr('id');
});代码>
这是主要因素
跨度
跨度
跨度
如果所需元素具有id
s,则可以使用[id]
选择器
$(文档)。在('click','*:not([id])上,函数(e){
e、 停止传播();
console.log($(this).closest('[id]')).attr('id');
});代码>
这是主要因素
跨度
跨度
跨度
我的建议是添加一些带有数据属性的标识符,例如data parent=“999”
,然后在需要单击处理程序内部的位置使用单击处理程序使用var$parent=$(this)获取父元素。最近(“[data parent]”)代码>。然后,您可以获取有关该元素的任何信息,并使用$('I`m a newly-generated element')。insertAfter($parent)
我的建议是添加一些带有数据属性的标识符,例如data parent=“999”
,然后在需要单击处理程序内部的位置使用单击处理程序,使用var$parent=$(this.closest(“[data parent]”)获取父元素代码>。然后,您可以获取有关该元素的任何信息,并使用$('I`m a newly-generated element')。insertAfter($parent)代码>在@Mohamed Yousef的建议下,我决定创建一个小的嵌套函数来循环元素直到结束
这不需要添加和删除新的数据属性,并且可以在包含所有类型元素的每个容器中工作
这是:
function get_first(element)
{
function is_parent(element)
{
if($(element).parent().attr('id') !='contentholder')
{ return is_parent('#'+$(element).parent().attr('id'));
}else{ return res=$(element).attr('data-editor-id'); }
}
return is_parent(element);
}
在@Mohamed Yousef的建议下,我决定创建一个小的嵌套函数来循环元素直到结束
这不需要添加和删除新的数据属性,并且可以在包含所有类型元素的每个容器中工作
这是:
function get_first(element)
{
function is_parent(element)
{
if($(element).parent().attr('id') !='contentholder')
{ return is_parent('#'+$(element).parent().attr('id'));
}else{ return res=$(element).attr('data-editor-id'); }
}
return is_parent(element);
}
$(this).closest('[id]').attr('id')
谢谢你的评论,但我不明白你的建议。我不知道[身份证]<代码>$(此).最近的('[id]').attr('id')
谢谢您的评论,但我不明白您的建议方式。我不知道[身份证]!?如果我正确理解了您的代码,那么它只在其他元素没有id属性的情况下工作。这是不对的,我更新了我的代码。是的@MikeR我明白了。。在这种情况下,您可以对所需元素使用数据id
属性,然后使用[data id]
而不是[id]
。好的,但我要问的是,在“contentholder”之前,是否没有办法查找第一个元素,从单击的元素开始,然后向上移动?@MikeR给我一些时间来找到您想要的方法。。也许还有很长的路,但我会的see@MikeR回答更新如果我正确理解了代码,那么它只在其他元素没有id属性的情况下工作。这是不对的,我更新了我的代码。是的@MikeR我明白了。。在这种情况下,您可以对所需元素使用数据id
属性,然后使用[data id]
而不是[id]
。好的,但我要问的是,在“contentholder”之前,是否没有办法查找第一个元素,从单击的元素开始,然后向上移动?@MikeR给我一些时间来找到您想要的方法。。也许还有很长的路,但我会的see@MikeR回答Updatedok,但我要问的是,在“contentholder”之前,是否没有办法查找第一个元素,从单击的元素开始并向上移动?您可以使用$('#contentholder')。first()
,但如果你需要某些元素,我更喜欢更具体的解决方案。$(“#contentholder”)。查找(“[data parent]”)。获取(0)
@vytsci标记他,通过键入@
然后键入他的名字:)@Mohamed Yousef谢谢你的建议:我想人们还是会被注意到的。@vytsci是的,非常感谢,我发布了解决伊托克的方法,但是我要问的是,在“contentholder”之前,有没有办法从单击的元素开始查找第一个元素并向上移动?您可以使用$('#contentholder').first()
,但如果您需要某些元素,我更喜欢更具体的解决方案。$(“#contentholder”)。查找(“[data parent]”)。获取(0)
@vytsci通过键入@
标记他以获得通知,然后键入他的名字:)@Mohamed Yousef感谢您的建议:D认为人们还是会被注意到的。@vytsci是的,非常感谢,我发布了解决方法