Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
jQuery "Genealogy" plugin (github.com/spicyj)
35 points by sophiebits on June 29, 2011 | hide | past | favorite | 14 comments


Nicely done aliasing

    jQuery.fn.extend({
        grandchildren: function() {return this.children().children();},
        greatGrandchildren: function() {return this.grandchildren().children();},
        grandparent: function() {return this.parent().parent();},
        greatGrandparent: function() {return this.grandparent().parent();},
        aunts: function() {return this.parent().siblings();},
        prevAunt: function() {return this.parent().prev();},
        prevAunts: function() {return this.parent().prevAll();},
        nextAunt: function() {return this.parent().next();},
        nextAunts: function() {return this.parent().nextAll();},
        cousins: function() {return this.aunts().children();},
        prevCousins: function() {return this.prevAunts().map( 
            function () {return jQuery( this ).children().get().reverse();});},
        nextCousins: function() {return this.nextAunts().children();},
        nieces: function() {return this.siblings().children();},
        prevNieces: function() {return this.prevAll().map( function () {
                return jQuery( this ).children().get().reverse();} );},
        nextNieces: function() {return this.nextAll().children();}
    });

    jQuery.fn.uncles = jQuery.fn.aunts;
    jQuery.fn.prevUncle = jQuery.fn.prevAunt;
    jQuery.fn.prevUncles = jQuery.fn.prevAunts;
    jQuery.fn.nextUncle = jQuery.fn.nextAunt;
    jQuery.fn.nextUncles = jQuery.fn.nextAunts;

    jQuery.fn.nephews = jQuery.fn.nieces;
    jQuery.fn.prevNephews = jQuery.fn.prevNieces;
    jQuery.fn.nextNephews = jQuery.fn.nextNieces;


Read this in a funny way but I really hope I never get one project done with this, I am so bad at understanding family relations, I struggle to remember what a niece or nephew is, what's the relation name of my brother's wife, etc.


Same here! I usually end up describing them all as relatives.


Hilarious - nice job Ben! I was bemusing in the Khan Academy chat the other day that I always thought it'd be hilarious (although, useful) to have a .uncle() or .aunt() method (for getting .parent().siblings()). Quite amused that Ben put the effort into making this happen.


Bemused doesn't mean that, it means puzzled, bewildered, or confused.

Also, peruse means to pore over meticulously, not glance over.


And while webare here, "cursory"?


Cursory is what people mean when they mistakenly use peruse.

A cursory examination is not a thorough one.


While this definitely does make things more concise, does it make things clearer? I've never had to deal with overly complex hierarchies like that in JS, so I'm not sure.


As the opening paragraph suggests (and my cough sibling cough comment says as well), I wrote this mostly just for fun but it could be used in an actual project as well.


Oh I missed that part :)

I don't think it's ready for production anyway until it has el.creepyUncle() and el.nieceWithInappropriateFacebookPhotos()


Submit a pull request. ;)


Just seems like a fun plugin


Ah yes, but how do I keep track of my firstCousinsTwiceRemoved() ?

(Maybe if I saw the code, I could actually keep straight how those more distant relations work...)


Fine nerd humor!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: