我需要能够为页面上的每个元素获取一个unqiue选择器。获取唯一选择器jQuery
例如,当我点击一个元素我想要做这样的事情:
$(document).click(function(){
var sel = getUniqueSel(this);
});
所以,在数据库存储sel
值后,我可以得到价值,简单地通过
var el = $(sel);
我不能改变的,不知道有关页面的HTML结构任何东西,我不能简单地添加唯一的ID(使用JS)的每个元素,因为这将是低效的。
我需要能够为页面上的每个元素获取一个unqiue选择器。获取唯一选择器jQuery
例如,当我点击一个元素我想要做这样的事情:
$(document).click(function(){
var sel = getUniqueSel(this);
});
所以,在数据库存储sel
值后,我可以得到价值,简单地通过
var el = $(sel);
我不能改变的,不知道有关页面的HTML结构任何东西,我不能简单地添加唯一的ID(使用JS)的每个元素,因为这将是低效的。
另一种方法可能是徘徊DOM树,创造的元素,你可以保存并稍后再使用它作为一个选择的路径,虽然ŧ帽子可能不是防弹的,但也许它是一个可以开始的地方。
编辑:更新了答案在评论你的建议,现在它返回的ID(如果可用)
只需访问上JSBin的例子,然后单击document
两次。 但要注意什么得到强调..
jQuery.fn.getPath = function() {
if (this.length != 1) throw 'Requires one element.';
var path, node = this;
if (node[0].id) return "#" + node[0].id;
while (node.length) {
var realNode = node[0],
name = realNode.localName;
if (!name) break;
name = name.toLowerCase();
var parent = node.parent();
var siblings = parent.children(name);
if (siblings.length > 1) {
name += ':eq(' + siblings.index(realNode) + ')';
}
path = name + (path ? '>' + path : '');
node = parent;
}
return path;
};
var sel;
$(document)
.click(function (e, a) {
if (!sel) {
sel = $("#comment-21702402")
.getPath();
alert("Path is: " + sel + ", hiding the Element -> Click again to highlight");
} else {
$(sel)
.css("background-color", "yellow");
}
});
我也可以检查'ID',所以如果div有一个ID定义的ID作为选择器,否则获取路径。我想这会节省一些数据库存储空间。 – Cristy 2013-03-12 13:12:44
完成此操作的一种方法是获取所有可以在单击元素上获得的信息。 所以,当你把它保存到数据库中,你可以将其保存,例如文本: 如果你点击的元素是:<div> I'm a div </div>
$(document).click(function(){
var tagName = $(this).prev().prop('tagName');
var attributes = {};
if(this.length) {
$.each(this[0].attributes, function(index, attr) {
attributes[ attr.name ] = attr.value;
});
}
var elText=$(this).html();
saveToDB(tagName,attributes,elText);
});
您可以使用属性,你有或者干脆使用后发现该元素
$(tagName+'['+attribute+'="'+value+'"]:contains("'+elText+'")')
我想这应该有助于
保存元素内容的效率真的很低。 – Cristy 2013-03-12 13:11:12
为什么你不能给你有兴趣的ID的人?只是好奇?你真的对页面上的每一个对象感兴趣吗? – mplungjan 2013-03-12 12:19:44
http://stackoverflow.com/questions/5442767/returning-the-full-path-to-an-element – mplungjan 2013-03-12 12:20:31
@mplungjan我想存储页面上的所有点击元素的选择器:),这个脚本将包括在许多页面上。 – Cristy 2013-03-12 12:21:13