[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 ricardob...@gmail.com wrote:
 Would that be a tbody in the way? Try putting it there yourself,
 this should avoid the problem:

 table cellspacing=0
 tbody
   tr
     td/td
   /tr
   tr
     td/td
   /tr
 /tbody
 /table

 On Nov 19, 11:57 pm,go_doressupp...@jdrcomputing.com 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 tbody in the way? Try putting it there yourself,
this should avoid the problem:

table cellspacing=0
tbody
  tr
td/td
  /tr
  tr
td/td
  /tr
/tbody
/table

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.