2009-03-12 12 views
12

Ho una tabella e voglio sapere se il suo ultimo td il suo id contiene una certa stringa. Ad esempio, se il mio ultimo td ha id "1234abc", voglio sapere se questo id contiene "34a". E ho bisogno di farlo in una dichiarazione 'se'.jQuery: come posso trovare se un ID ha una stringa specifica?

se (myLastTdId Contiene "blablabla") {} fare qualcosa

Grazie !!!

+0

http://stackoverflow.com/a/5866314/900284 –

risposta

22

È possibile utilizzare il "attributeContains "selettore:

if($("#yourTable td:last-child[id*='34a']").length > 0) { 
    //Exists, do something... 
} 
+0

E, se il "qualcosa" si compone di un'operazione jQuery, ad esempio l'impostazione di un css, è possibile semplicemente concatenarlo - no se richiesto: ("#yourTable td: last-child [id * = '34a']"). css ("color", "red"); –

+0

^insert $ all'inizio dell'espressione –

+0

La parte '> 0' è ridondante. Giusto 'element.length' funzionerà. –

8

Questo è fatto facilmente con indexOf e last-child.

<table id='mytable'> 
<tr> 
    <td id='abc'></td> 
    <td id='cde'></td> 
</tr> 
</table> 

<script> 
if($('#mytable td:last-child').attr('id').indexOf('d') != -1) { 
    alert('found!'); 
} 
</script> 

Qui sarebbe alert 'trovato' perché d compare nella stringa cde

0

Se il td è "nuda" (cioè non avvolto in un oggetto jQuery), è possibile accedere suo attributo id direttamente:

if (myTD.id.indexOf("34a") > -1) { 
    // do stuff 
} 

Se è in un oggetto jQuery, è necessario farlo uscire prima:

if (jMyTD[0].id.indexOf("34a") > -1 { 
    // do stuff 
} 

La funzione indexOf trova l'offset di una stringa all'interno di un'altra. Restituisce -1 se la prima stringa non contiene affatto il secondo.

Edit:

A pensarci bene, potrebbe essere necessario chiarire la tua domanda. Non è chiaro quale di questi si sta cercando di abbinare "34 bis" contro:

  • <td id="1234abcd">blahblah</td>
  • <td id="blahblah">1234abcd</td>
  • <table id="1234abcd"><tr><td>blahblah</td></tr></table>
  • <table id="blahblah"><tr><td>1234abcd</td></tr></table>
0

Non del tutto chiaro se si intende ultimo td in ogni TR, o l'ultimo td:

if ($('#myTable td:last[id*=34a]').length) { 
    ... 
} 
Problemi correlati