2010-11-10 19 views
23

Sto pensando di utilizzare attributi personalizzati in Jquery per evitare l'uso di attributi di classe o id, per non interferire con i designer html.Attributi personalizzati Jquery

Tenendo conto di questa idea, l'html dovrebbe essere pezzi come:

<ul Jquery="CommonUl"> 
    <li Jquery="CommonLi"></li>  
    <li Jquery="CommonLi"></li> 
    <li Jquery="CommonLi"></li> 
    <li Jquery="CommonLi"></li> 
    <li Jquery="CommonLi"></li> 
</ul> 
  • Pensi che questo è un buon approccio?

  • Qual è la tua opinione sulla convalida W3C di questi attributi personalizzati?

  • Conoscete qualche modo per programmare con Jquery senza interferire con il lavoro dei progettisti HTML?

  • Per quanto riguarda le prestazioni, suppongo che con gli attributi o gli ID di classe i selettori di jQuery siano più veloci rispetto all'utilizzo di un attributo personalizzato e funzioni di filtro come "contiene, ecc.". È giusto?

+2

La mia opinione sulla convalida W3C per questo è che avrà esito negativo. :) Hai familiarità con '.data()' di jQuery? (Non sarà di aiuto se hai bisogno di memorizzare i dati direttamente nel markup, però) –

+2

In realtà @Pekka lo farà, con jQuery 1.4.3! Una chiamata a '.data (" pippo ")' prenderà il valore di 'data-foo =" valore "' su un elemento. – Pointy

+1

@Pointy si, ma 'data- *' non è valido in HTML 4 ... –

risposta

81

Si può fare questo, utilizzare data- attributes anche se (part of the HTML5 specification), in questo modo:

<li data-something="CommonLi"></li> 

jQuery anche ha integrato il supporto per questi in 1.4.3+, ad esempio:

$("li").data("something") //"CommonLi" 

Per le tue altre domande:

  • Faranno convalidano se si tratta di HTML5 - ma non saranno pausa nulla in HTML4
  • Questo non dovrebbe interferire con il progettista, ma sarà dipendono che progettista
  • Se sei il recupero da un elemento, la prestazione è la stessa di qualsiasi altro attributo
+0

Tuttavia, questo non sarà valido in HTML 4, quindi se è importante supportare i browser meno recenti e essere W3C valido non è un'opzione triste. Se questo non è un problema, questo è il modo migliore per andare –

+1

@Pekka - Sono d'accordo, ma essere valido al 100% non è importante quanto essere funzionale al 100% ... se non ci fosse un divario nelle specifiche dove questi erano necessari, non sarebbero stati aggiunti in HTML5 :) Upping HTML5 DOCTYPE dovrebbe occuparsi di entrambe le parti qui. –

+0

Ciao, grazie in anticipo ... Ottima risposta. Il fatto è che probabilmente non useremo l'HTML 5 in modo non completo fino al 2012. – Jose3d

1

io personalmente vi consiglio di utilizzare il metodo jQuery integrato per il salvataggio dei dati con ogni elemento. che segue è il frammento di codice per i dati di salvataggio:

$("ul").data("CommonUl"); 
$("li").data("CommonLi"); 
+0

Prima di tutto, grazie ... Non sapevo questo modo di memorizzare i dati per l'elemento foreach. Il fatto è che probabilmente non avrò bisogno di dire qualcosa del tipo: "tutti gli ul e gli i avranno i seguenti dati allegati", invece ci saranno alcuni elementi specifici (forse nella pagina ci sono 4 ul, e mi piacerà applicare questo a uno e non dalla posizione) ... I migliori saluti. – Jose3d

8

se hai intenzione di avere diversi attributi suggerisco di impostare un attributo namespace unico, per esempio

<li data-yourapp>...</li> 

e utilizzare tale attributo come una tabella hash

$("li").data("yourapp", { 
    points : 2000, 
    life : 1, 
    weapons : { 
     firegun : 0, 
     missiles : 12 
    } 
}); 

in questo modo si ridurrà l'accesso elemento e vi recuperare tutti i dati personalizzati volta

+0

Bello ... non sapevo che potessi fare questo. – Adam

Problemi correlati