2011-10-13 19 views
5

Sto usando jquery-ui-tabs per consentire agli utenti di creare le proprie schede, quindi di passare tra le schede come meglio credono. Il contenuto dei widget sono piccoli widget che sono come mini programmi a sé stanti. Gli utenti possono quindi scegliere quali widget desiderano su una determinata scheda.jquery-ui-tabs interferance di contenuto

Questo funziona bene finché un determinato widget è impostato solo in 1 scheda, tuttavia, le cose iniziano a essere errate quando un determinato widget viene aggiunto a 2 o più schede. Quando i widget sono generati, usano l'id dal database. Per esempio . Se un determinato widget viene aggiunto a 2 o più schede, finiscono con 2 div con lo stesso id id, ad esempio widget_1, che causa problemi come puoi immaginare.

Quindi la mia domanda è: qual è il modo migliore per risolvere un problema del genere?

Vorrei sapere prima che volevano essere in grado di utilizzare lo stesso widget su più di una scheda. Ho la sensazione questo è quasi costretta a essere una completa riscrittura ...

risposta

2

fa il "div chiamato div1" hanno "div1", come classe o id?

tua domanda suona come se fosse un id, e questo è tutto il problema: the id has to be unique

per risolvere questo, il lavoro con le classi - che può essere utilizzato più volte e si dovrebbe essere in grado di fare le stesse cose esatte (ma questo è un po 'difficile da dire senza vedere alcun codice).

MODIFICA: cambiato il mio collegamento di pugno per mostrare la raccomandazione di w3c. ho collegato this article prima del

+0

usando solo l'ultima riga di questo articolo * Se si desidera che le pagine Web per la convalida come XHTML o HTML, allora si dovrebbe avere ID univoci sulle sue pagine * -. Tutto funziona bene anche senza essere valido! Non riesco ancora a capire perché le persone si affidano così tanto ai documenti di raccomandazione ... Le raccomandazioni escono per seguire, ma ci sono casi qua e là che non possiamo semplicemente seguire le raccomandazioni e lascia che assicuri che tutto funzioni ancora alla grande. .. ** in qualsiasi browser! ** – balexandre

+0

sono d'accordo con te, ma in questo non è il caso in cui "non possiamo semplicemente seguire le raccomandazioni" - questo è facile, e se puoi scegliere di seguire la raccomandazione o rompere con esso, perché qualcuno dovrebbe scegliere di romperlo ... – oezi

-2

Non è una pratica consigliata avere lo stesso id nella stessa pagina, ma non dovresti avere problemi con esso, tutto ciò che devi fare nelle tue chiamate javascript è aggiungere la scheda da solo, per esempio:

$(".tab-1 #div1")... anziché soltanto $("#div1")...

però, vorrei sempre evitare di avere la stessa id e "raccontare" il generatore di utilizzare div1-random-number e sempre utilizzare la classe per ottenere il widget utilizzando la scheda correntemente come si è visto nel codice sopra

Live example on JsBin

+1

non consiglierei di usare lo stesso id due volte, anche se i browser lo accettano. è ancora in torto e contrario alla definizione: http://www.w3.org/TR/html401/struct/global.html#h-7.5.2 – oezi

+0

** W3 è solo una raccomandazione thingy **, smetti di pensare che il buco mondo web si bloccherà se non segui una raccomandazione! – balexandre

+1

** I consigli ci sono per un motivo **, smetti di pensare che tutti usano un moderno browser bling-bling - ci sono ancora persone che usano IE6, Netscape, speciali Screenreader-Browser e molte altre cose pazze/vecchie che potrebbero avere _have_ un problema con più ID identici. (ed è lo stesso lavoro usare un ID o una classe, quindi perché qualcuno dovrebbe rompere con la raccomandazione senza avere advocages? al massimo, non succede nulla, ma tu puoi ottenere un sacco di probolemi) – oezi

Problemi correlati