I noticed some errors in my code (it was written directly...), so here
is the corrected one:

jQuery.inArray = Array.indexOf ?
    function(elem, array, i) {
        return Array.indexOf(array, elem, i);
    } :
    function(elem, array, i) {
        var l = array.length;
        i = i === undefined ? 0 :
            i < 0 ? Math.ceil(i) + l :
                    Math.floor(i);
        for (; i < l; ++i)
            if ( array[i] === elem )
                return i;
        return -1;
    };

jQuery.lastInArray = Array.lastIndexOf ?
    function(elem, array, i) {
        return Array.lastIndexOf(array, elem, i);
    } :
    function(elem, array, i) {
        var l = array.length
        i = i === undefined ? l-1 :
            i < 0 ? Math.ceil(i) + l :
                    Math.floor(i);
        for (; i > -1; --i)
            if ( array[i] === value )
                return i;
        return -1;
    }

Hope it is ok now...

On Jan 23, 9:45 am, Robert Katić <robert.ka...@gmail.com> wrote:
> Maybe it would be better to return the index of the element in a new
> jQuery obj from selector only if elem === undefined....
>
> Regardin jQuery.inArray maybe it would be useful to heve an
> jQuery.lastInArray too. Maybe with start/end index as the thrd
> argument?
> Something like this:
>
> jQuery.inArray = Array.indexOf ? //some browsers have this
>     function(elem, array, i) {
>         return Array.indexOf(array, elem, i);
>     } :
>     function(array, elem, i) {
>         var l = array.length;
>         i = i === undefined ? 0 :
>             i < 0 ? Math.ceil(i) + l :
>                     Math.floor(i);
>         for (; i < l; ++i)
>             if (array[i] === elem)
>                 return i;
>         return -1;
>     };
>
> jQuery.lastInArray = Array.lastIndexOf ? //some browsers have this
>     function(elem, array, i) {
>         return Array.lastIndexOf(array, elem, i);
>     } :
>     function(elem, array, i) {
>         var l = array.length
>         i = i === undefined ? l-1 :
>             i < 0 ? Math.ceil(i) + l :
>                     Math.floor(i);
>         while ( i )
>             if ( seq[--i] === value )
>                 return i;
>         return -1;
>     }
>
> Thoughts?
>
> On Jan 23, 3:21 am, John Resig <jere...@gmail.com> wrote:
>
> > Yeah, I can dig this. You should file an enhancement ticket.
>
> > --John
>
> > On Thu, Jan 22, 2009 at 9:10 PM, ajpiano <ajpi...@gmail.com> wrote:
>
> > > It would be useful to be able to use the .index() method to find the
> > > index of the  current element in a given set, rather than the current
> > > implementation (searching the current set for a given element), which
> > > forces the developer to do gyrations in order to find out a simple
> > > piece of info.
>
> > > For instance
>
> > > $("#sometable th img").click(function() {
> > >  //find out index of img's parent <th> in its own <tr>
> > >  var $th = $(this).parent();
> > >  //now we have a few not so great choices
> > >  //1.
> > >  var index = $("#sometable thead tr).index($th);
> > >  //2.
> > >  var index = $th.parent().children().index($th);
> > >  //3. doesn't even work, but many would assume it would, and it
> > > doesn't!)
> > >  // because the desired element is always the last one in the set.
> > >  var index = $th.siblings().andSelf().index($th);
> > > });
>
> > > Paul Irish and I propose the following enhancement, which is rough and
> > > we welcome any suggestions...
>
> > > jQuery.fn.index = function(elem){
>
> > >  // legacy implementation
> > >  if ( typeof elem === 'object'){
> > >    return jQuery.inArray(
> > >              elem && elem.jquery ? elem[0] : elem
> > >             , this );
> > >  }
> > >  //return the index of the element in a new jQuery obj from selector,
> > > or by default, amongst its own siblings.
> > >  return jQuery.inArray(this[0],
> > >            elem ? jQuery(elem) : this.parent().children() );
> > > };
>
> > > which would allow for the following.
>
> > > $("#sometable th img").click(function() {
> > >  //find out index of img's parent <th> in its own <tr>
> > >  var index = $(this).parent().index();
>
> > >  //for sake of example, index of image in set of all images.
> > >  var imgIndex = $(this).index("img");
> > > });
>
> > > If people think this is worthwhile, we will post an enhancement
> > > ticket.  Thoughts?
>
>
--~--~---------~--~----~------------~-------~--~----~
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