5 ms·
jQuery "Genealogy" plugin
- tzury 15y agoNicely 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;
- iaskwhy 15y agoRead 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.
- syaz1 15y agoSame here! I usually end up describing them all as relatives.
- jarin 15y agoWhile 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.
- jeresig 15y agoHilarious - 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.
- alnayyir 15y agoBemused doesn't mean that, it means puzzled, bewildered, or confused. Also, peruse means to pore over meticulously, not glance over.
- LogicHoleFlaw 15y agoAh 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...)
- BillSaysThis 15y agoFine nerd humor!