使用jQuery查找任何后代的第一个id
Find the first id of any descendant using jQuery
对于JS页面上的可拖拽div,我想将最后一个位置存储在本地存储中,以便当用户刷新时,页面上的可拖拽元素保持不变。
我的HTML一般是这样的:
<div id="some_id" class="draggable">
<p>I am a draggable thing.</p>
</div>
然后我使用div
的id
作为本地存储中的键,以便在页面上有多个可拖动对象不会导致它们在刷新时都被赋予相同的位置。
<div class="visibility_container draggable">
<button class="close_button">Close</button>
<div id="some_id">
<p>I am a draggable thing.</p>
</div>
</div>
注意draggable
类每次都是通过编程方式添加的。
这些模板可能会有所不同,但永远不会在其中包含id
-如果有的话,它们将是非常糟糕的模板-所以我只需要找到具有id
的第一个后代元素并使用该id
的值作为我的本地存储键。
我怎样才能找到最近的元素与JS?我知道jQuery有一个.closest()
方法,它可以找到最近的祖先-我需要朝相反的方向走。我也知道jQuery的.find()
可以找到我匹配一个选择器的所有后代,但我不确定我能保证jQuery返回这些子的顺序,因为API文档在这一点上不清楚。
我也知道jQuery的。find()可以找到我匹配一个选择器的所有后代,但我不确定我能保证jQuery返回这些子的顺序,因为API文档在这一点上不清楚。
find
列出文档顺序(又名"DOM顺序")中的元素(您是对的,我很惊讶在文档中没有看到明确的声明)。"文档顺序"是一个定义良好的DOM术语,它意味着对后代元素进行深度优先搜索。或者换一种说法:其文本位于标记的第一个。
例如:
<div id="container">
<div>
<div>
<div id="one"></div>
</div>
<div id="two"></div>
</div>
…然后
console.log($("#container").find("[id]").first().attr("id"));
…将记录one
,而不是two
。
这个文档顺序在大多数jQuery API和DOM方法中都很常见,比如querySelectorAll
、getElementsByTagName
等等。但是,我没有在jQuery文档中找到关于它的明确说明,这似乎是一个疏忽。到目前为止,我发现最接近的是记录了一个异常(例如,在这里说"The second and third…使用一个或多个DOM元素创建一个jQuery对象,这些元素已经以其他方式被选中…不像大多数其他多元素jQuery操作,元素不按DOM顺序排序。[我强调]。)多选择器文档还指出,结果将按照文档顺序排列(而不是选择器的顺序)。
- 而循环只设置php中输入字段中的第一个值
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- IE11中的第二个调用取消了第一个Fetch API调用
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- Javascript:表单验证getElementById仅返回第一个id元素
- 仅将 CSS 规则应用于
中的第一个 ,而不分配类/ID - JS在隐藏未定义的值后仅从数组中返回第一个id的值
- 具有相同输入 ID 的多个表单仅使用 Ajax 发送第一个值
- jQuery只从循环中获取第一个id值
- Javascript只从foreach循环中获取第一个id.为什么
- 使用jQuery查找任何后代的第一个id
- 如何找到第一个键“id”在AngularJS的页面上
- 在具有多个id的目标页面上,脚本只作用于第一个id
- Jquery效果只作用于第一个id
- 如何获得第一个的id
& lt; tbody>在HTML表格中使用jQuery - jQuery 遍历 .each() 并基于第一个 .each() 给出迭代 id
- Jquery scrollTop将只滚动到第一个id,而不会滚动到其他id
- JS不读取第一个ID,只读取第二个ID
- ajax表单只向第一个id提交空白描述