Earlier this year this posted:
http://groups.google.com/group/jquery-dev/browse_thread/thread/aa060b1945527d60

I found it helpful and made a few modifications. Namely if one of the
parent nodes has an id it uses said parent as the root.


$.fn.extend({
    /**
     * Return a valid jQuery selector path to an object from a
container
     * root - specify a root element from which to generate the path
     *
     * If no root is specified, then path is given from the document
root
     * If root is same as element, no path is returned (undefined)
     * If root is not actually a parent of this element, then no path
is
     * returned (undefined);
     *
     */
    path :  function(root) {
        var r;
        if(root) {
            r = $(root)[0];
        } else {
            r = $()[0];
        }
        var el = this[0];
        if(el) {
            var path = "";
            while(el && el.parentNode && el != r) {
                if(el.nodeType == 9) {
                    // reached document node, no root provided.
                    return;
                }

                if (el.id){
                    path = el.tagName.toLowerCase()+"#"+el.id+"
"+path;
                    break;
                } else {
                    path = el.tagName.toLowerCase()+":eq("+
                        $(el).prevAll(el.tagName).size()+") "+path;
                }
                var el = el.parentNode;
            }
        }
        return path;
    }
});

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-dev@googlegroups.com
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to