2011-09-20 15 views
14

Sto facendo un progetto con fullcalendar e devo essere in grado di selezionare un elemento in base al numero del giorno. Ecco un esempio dell'elemento ho bisogno di selezionare:JQuery seleziona per testo interno

<div class=​"fc-day-number">​1​</div>​ 

Ecco il javascript che ho scritto:

$("div.fc-day-number:contains(" + day + ")").parent().parent().css({ 'background-color': 'Green' }); 

Questo catturerà tutte le div il cui testo interno contiene la variabile giorno, problema è se il giorno == 1 allora seleziona anche 11,12,13,21,31, ecc. Come scrivo un selettore JQuery che catturerà i div con la classe "fc-day-number" e il cui testo interno è esattamente uguale al giorno?

risposta

15

Scrivi la tua filter funzione:

$("div.fc-day-number").filter(function(){ 
    return $(this).text() == day; 
}).parent().parent().css({ 'background-color': 'Green' }); 
+1

Probabilmente aggiungere $ (this) .text(). ALowerCase() === giorno; –

+0

@ Kris Perché? L'OP usa solo i numeri, quindi il caso non dovrebbe avere importanza. Ho anche usato il doppio equivale perché ho pensato che il giorno sarebbe stato numerico mentre 'text()' sarebbe una stringa. – Dennis

+0

Oh, ho pensato che potesse essere qualsiasi testo/stringa. –

3
$("div.fc-day-number").each(function(){ 
    if($(this).text()==day) 
    { 
     $(this).css({ 'background-color': 'Green' }); 
    } 
}); 
0
jQuery.expr[":"].text = jQuery.expr.createPseudo(function(arg) 
{ 
    return function(elem) { 
     return jQuery(elem).text().toLowerCase() == arg; 
    }; 
}); 

Questo codice sarà aggiungere il nuovo pseudoselector che filtrerà gli elementi del testo interno, che non è uguale a arg. Per esempio, utilizzare qui:

$("div.fc-day-number:text(" + day + ")").parent().parent().css({ 'background-color': 'Green' }); 
+0

Sebbene questo codice possa aiutare a risolvere il problema, non spiega _why_ e/o _how_ che risponde alla domanda. Fornire questo contesto aggiuntivo migliorerebbe significativamente il suo valore educativo a lungo termine. Si prega di [modificare] la risposta per aggiungere una spiegazione, compresi quali limitazioni e ipotesi si applicano. –

Problemi correlati