1

Further to my old question, I have to select all the rows whose display-order is not "-1".

<table id="t01">
  <tr>
    <th>HEAD 1</th>
    <th>HEAD 2</th>     
    <th>HEAD 3</th>
  </tr>
  <tr id="Grp1" display-order="0">
    <td>Grp1 data</td>
    <td>Grp1 data</td>      
    <td>Grp1 data</td>
  </tr>
  <tr>
    <td>Grp1 data</td>
    <td>Grp1 data</td>      
    <td>Grp1 data</td>
  </tr>
  <tr>
    <td>Grp1 data</td>
    <td>Grp1 data</td>      
    <td>Grp1 data</td>
  </tr>
  <tr id="Grp2" display-order="-1">
    <td>Grp2 data</td>
    <td>Grp2 data</td>      
    <td>Grp2 data</td>
  </tr>
  <tr>
    <td>Grp2 data</td>
    <td>Grp2 data</td>      
    <td>Grp2 data</td>
  </tr>
  <tr>
    <td>Grp2 data</td>
    <td>Grp2 data</td>      
    <td>Grp2 data</td>
  </tr>
<tr id="Grp3" display-order="0">
    <td>Grp3 data</td>
    <td>Grp3 data</td>      
    <td>Grp3 data</td>
  </tr>
  <tr>
    <td>Grp3 data</td>
    <td>Grp3 data</td>      
    <td>Grp3 data</td>
  </tr>
  <tr>
    <td>Grp3 data</td>
    <td>Grp3 data</td>      
    <td>Grp3 data</td>
  </tr>...
</table>

My Question is:

  • How can I select all <tr>s having display-order, but the display-order should not be -1?
  • I know that I can use .not( "[display-order='-1']" ), But I'm not getting how can I get tr with any display-order?

    $("[display-order='What_Value_Would_Go_Here?']").not("[display-order='-1']");
    
Community
  • 1
  • 1
trex
  • 3,848
  • 4
  • 31
  • 54

3 Answers3

2

One way to achieve this is to loop over using .each() and check the custom attribute of each selected element.

Working Code Snippet:

$("[display-order]").each(function(item){
  if($(this).attr('display-order') !== '-1')
    console.log('found');
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="t01">
  <tr>
    <th>HEAD 1</th>
    <th>HEAD 2</th>     
    <th>HEAD 3</th>
  </tr>
  <tr id="Grp1" display-order="0">
    <td>Grp1 data</td>
    <td>Grp1 data</td>      
    <td>Grp1 data</td>
  </tr>
  <tr>
    <td>Grp1 data</td>
    <td>Grp1 data</td>      
    <td>Grp1 data</td>
  </tr>
  <tr>
    <td>Grp1 data</td>
    <td>Grp1 data</td>      
    <td>Grp1 data</td>
  </tr>
  <tr id="Grp2" display-order="-1">
    <td>Grp2 data</td>
    <td>Grp2 data</td>      
    <td>Grp2 data</td>
  </tr>
  <tr>
    <td>Grp2 data</td>
    <td>Grp2 data</td>      
    <td>Grp2 data</td>
  </tr>
  <tr>
    <td>Grp2 data</td>
    <td>Grp2 data</td>      
    <td>Grp2 data</td>
  </tr>
<tr id="Grp3" display-order="0">
    <td>Grp3 data</td>
    <td>Grp3 data</td>      
    <td>Grp3 data</td>
  </tr>
  <tr>
    <td>Grp3 data</td>
    <td>Grp3 data</td>      
    <td>Grp3 data</td>
  </tr>
  <tr>
    <td>Grp3 data</td>
    <td>Grp3 data</td>      
    <td>Grp3 data</td>
  </tr>
</table>
Rahul Desai
  • 15,242
  • 19
  • 83
  • 138
  • Thanks, This solution give me the exact idea about how to do. – trex Dec 30 '14 at 11:32
  • 1
    @trex I am glad it helps. Readup: [Attribute Selector | jQuery](http://api.jquery.com/attribute-equals-selector/) and [.each() | jQuery](http://api.jquery.com/each/). I would appreciate an upvote too. ;) – Rahul Desai Dec 30 '14 at 11:41
  • 1
    @trex Also note that it would be more appropriate if you use data attributes if you want custom attributes. Readup: [Data Attributes | MDN](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes). All you need to do is replace `display-order` by `data-display-order`. Your code will be then more readable and easy to maintain. – Rahul Desai Dec 30 '14 at 11:44
1
$('#t01 tr[display-order][display-order!=-1]')
cetver
  • 11,279
  • 5
  • 36
  • 56
1

You can use this:

$("tr[display-order]tr[display-order!='-1']");

It will select all tr elements that have the attribute display-order and where the display-order attribute does not equal -1.

Demo

References:
Has Attribute Selector
Attribute Not Equal To Selector

97ldave
  • 5,249
  • 4
  • 25
  • 39