Woo! This class is awesome!

2009/6/27 csuwldcat <[email protected]>

>
> Daniel Stig. of the Mt dev team made one for Mootools before the
> jQuery one bit off his idea: http://code.google.com/p/qfocuser/
>
> No need to copy the imitation when you got the orig!
>
> On Jun 27, 10:40 am, Fábio Costa <[email protected]> wrote:
> > element.get('tabindex') ouldnt work since this is a very buggy attribute
> > theres an if on theyrr attr function if the attribute is tabindex, so you
> > would need need to create a get for tabindex.
> >
> > this focusable thing is a very hard one, since you can define what is
> > focusable or not on your browser... its not a generic thing.
> >
> > Element.Properties.tabindex = {
> > get: function(){
> > //this has been gotten from jquery.
> > // elem.tabIndex doesn't always return the correct value when it hasn't
> been
> > explicitly set
> > //http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-.
> ..
> >   var attributeNode = this.getAttributeNode( "tabIndex" );
> >   return attributeNode && attributeNode.specified
> >     ? attributeNode.value
> >      : this.nodeName.match(/(button|input|object|select|textarea)/i)
> >      ? 0
> >       : this.nodeName.match(/^(a|area)$/i) && this.href
> >       ? 0
> >        : undefined;
> >
> > }
> > };
> >
> > $extend(Selectors.Pseudo, {
> >
> > // i have not tested this
> > focusable: function(element) {
> >    var el = this,
> >         nodeName = el.nodeName.toLowerCase(),
> >         tabIndex = el.get('tabindex');
> >    return (/input|select|textarea|button|object/.test(nodeName)
> >      ? !el.disabled
> >      : 'a' == nodeName || 'area' == nodeName
> >        ? el.href || !isNaN(tabIndex)
> >        : !isNaN(tabIndex))
> >      // the element and all of its ancestors must be visible
> >      // the browser may report that the area is hidden
> >      && (el.offsetWidth > 0 || el.offsetHeight > 0);
> >  },
> >
> > //im not sure if is() == match() but if think it is
> >  tabbable: function(element) {
> >    var el = $(this),
> >          tabIndex = el.get('tabindex');
> >    return (isNaN(tabIndex) || tabIndex >= 0) && el.match(':focusable');
> >  }
> >
> > });
> >
> > Theres maybe something missing...
> > If it works let us know...
> >
> > Fábio Miranda Costa
> > Engenheiro de Computaçãohttp://meiocodigo.com
> >
> > On Fri, Jun 26, 2009 at 8:10 PM, Oskar Krawczyk <
> [email protected]>wrote:
> >
> >
> >
> > > It would seem *$.attr(element, 'tabindex')* would be *
> > > element.get('tabindex')* in Moo. I can't believe how
> > > counter-self-explanatory jQ syntax is– "parents" (all of them?),
> "closest"
> > > (closest parent or sibling? single or a set of elements) wtf...
> >
> > > Once you decipher how the functions work extend Pseudo.selectors by
> doing:
> >
> > > $extend(Selectors.Pseudo, {
> > > tabable: function() {
> > >  // this = element
> > > }
> > > });
> >
> > > On 26 Jun 2009, at 21:10, Rolf -nl wrote:
> >
> > > I could use the :tabbable and :focusable selector functions from
> > > jQuery I spotted in jQuery UI,however I have 0 experience in their
> > > language syntax. How would someone start porting stuff like this too a
> > > MooTools extension?
> >
> > > The majority of code is self explaining, but I for instance what
> > > $.attr does .... i dunno...
> >
> > > //Additional selectors
> > > $.extend($.expr[':'], {
> > >  data: function(elem, i, match) {
> > >    return !!$.data(elem, match[3]);
> > >  },
> >
> > >  focusable: function(element) {
> > >    var nodeName = element.nodeName.toLowerCase(),
> > >      tabIndex = $.attr(element, 'tabindex');
> > >    return (/input|select|textarea|button|object/.test(nodeName)
> > >      ? !element.disabled
> > >      : 'a' == nodeName || 'area' == nodeName
> > >        ? element.href || !isNaN(tabIndex)
> > >        : !isNaN(tabIndex))
> > >      // the element and all of its ancestors must be visible
> > >      // the browser may report that the area is hidden
> > >      && !$(element)['area' == nodeName ? 'parents' : 'closest']
> > > (':hidden').length;
> > >  },
> >
> > >  tabbable: function(element) {
> > >    var tabIndex = $.attr(element, 'tabindex');
> > >    return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is
> > > (':focusable');
> > >  }
> > > });
>



-- 
Blog: www.shakaran.es

Reply via email to