在ajax响应中找到相同的元素

Posted

技术标签:

【中文标题】在ajax响应中找到相同的元素【英文标题】:Find the same element in ajax response 【发布时间】:2013-12-15 21:57:17 【问题描述】:

元素:

var obj = $(this).parent().find('a');

// $(this) is a <UL> inside a <DIV>, but there can be multiple DIV>ULs on the page

接下来我使用 $.ajax() 获取一些 html

此 HTML 是另一个包含链接父级和链接的页面

有没有办法在不对选择器进行硬编码的情况下找到该链接?


我能以某种方式获得obj 的完整选择器路径吗?喜欢

body > div#content > div:nth-child(4) > a

这样我可以根据这个选择器从 ajax 响应中找到那个

【问题讨论】:

能否请您提供一些场景,以便于理解需求。? obj.selector 将返回使用的选择器,而在您的情况下只会返回 a,所以不,如果没有适当的选择器,例如 ID,就没有简单的方法可以做到这一点。 据我所知,您正在尝试以 CSS 选择器的形式获取相关元素的实际 DOM 位置(显示继承)。简短的回答,不可能。 【参考方案1】:

从链接的.parents(),您可以收集ids 和classes 并从中创建一个选择器。 比如:

Array.prototype.slice.call(link.parents()).reverse().map(function (element) 
  if (element.id) return "#" + element.id;
  if (element.className) return "." + element.className.split(" ").join(".");
  return element.tagName.toLowerCase();
).join(" ");

虽然这需要改进,所以parents 不会上升到 HTML,而只会上升到所需的元素。

【讨论】:

以上是关于在ajax响应中找到相同的元素的主要内容,如果未能解决你的问题,请参考以下文章

ajax请求请求数据缓存问题分析以及解决方案

获取input相同名字的元素的值

SecurityException 1000,即使使用相同的域

对于 np.array 中的每个元素,找到具有相同元素值的最大索引 [关闭]

删除ajax响应中的引号

jQuery ajax 调用没有响应