[jQuery] Re: Searching for the previous sibling that matches a condition

2008-12-18 Thread go_dores

FYI, my if statement was actually doing exactly what it was supposed
to.  The bug was inside the body of the if (I didn't post that :-().

Long story short, I was confused.  Basically prev and next are smarter
than I thought they were :-).  For what it's worth, my updated code is
below.  Basically what's going on is that I've got header rows and
detail rows.  When I delete the detail row I check to see if it is the
last one for its header, and if so, delete the header.  I may still
yet be doing it the hard way, but at least it works in Firefox now.

Thanks Karl and ricardobeat for your help.

  if ($(theTr).prev("tr").is(".headerrow") &&
($(theTr).next("tr").is(".headerrow") || $(theTr).is("tr:last-
child")))
  {
$(theTr).prev("tr").remove();
  }
  $(theTr).remove();


On Nov 20, 12:21 pm, ricardobeat  wrote:
> Would that be a  in the way? Try putting it there yourself,
> this should avoid the problem:
>
> 
> 
>   
>     
>   
>   
>     
>   
> 
> 
>
> On Nov 19, 11:57 pm,go_dores wrote:
>
>
>
> > First of all, I'm just getting started with jQuery so thanks in
> > advance for your patience.  I have a table that I am manipulating and
> > I need to remove a row under a certain condition.  I originally wrote
> > the test below:
>
> > if (theTr.previousSibling && theTr.previousSibling.className ==
> > "headerrow" &&
> >   (!theTr.nextSibling || theTr.nextSibling.className == "headerrow"))
>
> > In English, I have a tr element stored in the variable theTr.  I am
> > testing for the case where its previous and next siblings have a
> > certain CSS class.
>
> > This code works fine on IE and Safari, but does not work on Firefox.
> > It look like in Firefox the tr's have extra text node siblings in
> > between them.  What I would like to do to fix this is to find a jQuery
> > expression that will allow me to do this in a cleaner way.  So what I
> > need is an expression that will search backward for the first tr
> > sibling, and forward for the first tr sibling, skipping over the extra
> > gunk that seems to be there with Firefox.
>
> > Here was my last stab at this before I gave up and decided to ask for
> > help :-).  The problem with the code below is that it seems to be
> > looking at the immediate previous element and checking to see if it's
> > a tr, and of course that is false in Firefox.
>
> > if ($(theTr).prev("tr").is(".departmentrow") &&
> >   ($(theTr).next("tr").is(".departmentrow") || $(theTr).is("tr:last-
> > child")))
>
> > Long story short, what's the best way to do a search like this?  Any
> > pointers would be appreciated.- Hide quoted text -
>
> - Show quoted text -


[jQuery] Re: Searching for the previous sibling that matches a condition

2008-11-20 Thread ricardobeat

Would that be a  in the way? Try putting it there yourself,
this should avoid the problem:



  

  
  

  



On Nov 19, 11:57 pm, go_dores <[EMAIL PROTECTED]> wrote:
> First of all, I'm just getting started with jQuery so thanks in
> advance for your patience.  I have a table that I am manipulating and
> I need to remove a row under a certain condition.  I originally wrote
> the test below:
>
> if (theTr.previousSibling && theTr.previousSibling.className ==
> "headerrow" &&
>   (!theTr.nextSibling || theTr.nextSibling.className == "headerrow"))
>
> In English, I have a tr element stored in the variable theTr.  I am
> testing for the case where its previous and next siblings have a
> certain CSS class.
>
> This code works fine on IE and Safari, but does not work on Firefox.
> It look like in Firefox the tr's have extra text node siblings in
> between them.  What I would like to do to fix this is to find a jQuery
> expression that will allow me to do this in a cleaner way.  So what I
> need is an expression that will search backward for the first tr
> sibling, and forward for the first tr sibling, skipping over the extra
> gunk that seems to be there with Firefox.
>
> Here was my last stab at this before I gave up and decided to ask for
> help :-).  The problem with the code below is that it seems to be
> looking at the immediate previous element and checking to see if it's
> a tr, and of course that is false in Firefox.
>
> if ($(theTr).prev("tr").is(".departmentrow") &&
>   ($(theTr).next("tr").is(".departmentrow") || $(theTr).is("tr:last-
> child")))
>
> Long story short, what's the best way to do a search like this?  Any
> pointers would be appreciated.


[jQuery] Re: Searching for the previous sibling that matches a condition

2008-11-19 Thread Karl Swedberg
Not sure if you can get any cleaner than that, but if you want to  
chain off of it, you could do something like this:


$(theTr).filter(function() {
  var $this = $(this);
  return $this.prev('.departmentrow').length &&
  ($this.next('.departmentrow').length || $this.is(':last-child'));
})

--Karl


Karl Swedberg
www.englishrules.com
www.learningjquery.com




On Nov 19, 2008, at 8:57 PM, go_dores wrote:



First of all, I'm just getting started with jQuery so thanks in
advance for your patience.  I have a table that I am manipulating and
I need to remove a row under a certain condition.  I originally wrote
the test below:

if (theTr.previousSibling && theTr.previousSibling.className ==
"headerrow" &&
 (!theTr.nextSibling || theTr.nextSibling.className == "headerrow"))

In English, I have a tr element stored in the variable theTr.  I am
testing for the case where its previous and next siblings have a
certain CSS class.

This code works fine on IE and Safari, but does not work on Firefox.
It look like in Firefox the tr's have extra text node siblings in
between them.  What I would like to do to fix this is to find a jQuery
expression that will allow me to do this in a cleaner way.  So what I
need is an expression that will search backward for the first tr
sibling, and forward for the first tr sibling, skipping over the extra
gunk that seems to be there with Firefox.

Here was my last stab at this before I gave up and decided to ask for
help :-).  The problem with the code below is that it seems to be
looking at the immediate previous element and checking to see if it's
a tr, and of course that is false in Firefox.

if ($(theTr).prev("tr").is(".departmentrow") &&
 ($(theTr).next("tr").is(".departmentrow") || $(theTr).is("tr:last-
child")))

Long story short, what's the best way to do a search like this?  Any
pointers would be appreciated.