2012-06-04 5 views
6

ho questo codice:selettore jQuery con attributo specifico

$('a').click(
    function() { 
     $("#change_flash").css("display", "block"); $("#my_flash").css("display", "none"); 
    }); 

Ma questo funziona per tutti gli elementi di ancoraggio. Mi piacerebbe influenzare con questo script solo per gli elementi di ancoraggio che contiene l'attributo rel = "lightbox".

Come posso ottenerlo?

+0

ricerca di "jQuery classe selettori con gli attributi specifici" su Google ha rivelato http://stackoverflow.com/q/6246683/411902 –

risposta

4
$('a[rel="lightbox"]').click(
    function() { 
     $("#change_flash").css("display", "block"); $("#my_flash").css("display", "none"); 
    }); 
5

utilizzare il seguente:

$('a[rel="lightbox"]').click(
    function(){ 
     // do your stuff here 
    }); 

Questo sta usando la notazione attribute="value" (vedi riferimenti).

Ci sono, anche, le altre opzioni:

  • attributo-inizia-con: attribute^="value",
  • attributi-ends-con: attribute$="value",
  • attributo contiene: `attributo * = "valore" .

nota, ovviamente, che mentre $('[rel="lightbox"]') è un selettore assolutamente valida da sola, ciò causerà jQuery esaminare ogni elemento della pagina per quell'attributo e valore allo scopo di impegnare/assegnare l'evento click (S); quindi è sempre meglio usare un nome-tag, da cui il $('a[rel="lightbox"]'), o un nome di classe per limitare il numero di elementi che jQuery deve cercare per trovare gli elementi corrispondenti.

Anche se nei browser moderni mi sembra di ricordare che questa 'ricerca' è passata al numero nativo document.querySelectorAll(), piuttosto che usare Sizzle, ma anche così è meglio limitare la quantità di lavoro che un browser deve fare.

Riferimenti:

+0

maledetto, così facile :) thanx – David

+1

Sei assolutamente il benvenuto; Sono contento di essere stato di aiuto! =) –