我想知道如何使用jquery保存对象(this)的引用.我的意思是,例如我想当我的用户点击他页面中的任何元素时,我将对象的引用发送到我的网络服务器,下次用户调用服务器时,我将保存的参考发送回浏览器,并做其他的事情像fadeIn()...到目前为止我已经尝试过使用JSON.stringify(this)和JSON.stringify($(this)),但两者似乎都没有用.我也试过保存elemen't ID和类和类型,所以下次用户调用它我可以只使用选择器,但由于我想在任何网站上使用该脚本,事情可能不是理想的选择器.有没有办法得到一个元素的确切参考并将其发送到服务器?
不,对DOM元素的引用只能在一个DOM实例中工作(所以即使你重新加载同一个页面,引用也不再起作用).您将不得不使用选择器.如果您确定页面结构没有改变,获取相同元素的最简单方法是:
// Get numeric index of element on page.
var index = $('*').index(this);
// Restore element.
var $this = $('*').eq(index);
Run Code Online (Sandbox Code Playgroud)
您可以通过尽可能使用ID和类来更改页面.
看看这个脚本:http://paste.blixt.org/297640
这是一个更简单的版本,它不依赖于类/ ID:
jQuery.fn.getPath = function () {
if (this.length != 1) throw 'Requires one element.';
var path, node = this;
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;
};
Run Code Online (Sandbox Code Playgroud)
像这样使用:
// Get selector for element.
var path = $(this).getPath();
// Get element using selector.
var $this = $(path);
Run Code Online (Sandbox Code Playgroud)