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