2009-05-21 8 views
9

Ho appena avuto l'epifania jQuery l'altro giorno e sento ancora che ci sia un sacco di energia che non sto utilizzando.Qual è la tua funzione preferita di jQuery?

Detto questo, qual è la tua caratteristica preferita di jQuery che ti fa risparmiare tempo e/o rende le tue applicazioni lato client molto più interessanti o potenti?

+0

@JerSchneid - diventa qualcosa che la gente piace vedere quando in realtà non c'è una risposta giusta o sono soggettivi ... – RSolberg

+1

Gli stretti voti deve essere stato perché questa domanda non ha una risposta unica ("non è una vera domanda"), è soggettiva ("soggettiva e argomentativa") e non è stata segnalata come wiki della comunità. Ma ora è stato impostato come tale ed è più come un "dibattito", quindi non ci dovrebbero essere più voti di chiusura :) – Seb

+1

In realtà, tutti e tre i voti ravvicinati sono per "Non programmazione correlata" –

risposta

27

La mia caratteristica preferita di jQuery è il modo in cui ha aiutato a trasformare JavaScript da una lingua odiata in un linguaggio sexy quasi da un giorno all'altro.

+1

Beh ... in realtà ... non è una caratteristica, ma sono d'accordo che è grandioso. – Seb

+2

Io chiamo cazzate. Non è stata la biblioteca a cambiarlo ... Era un prototipo. E No, non sono un fan ragazzo prototipo mentre uso jQuery - Credo solo che John Resig abbia tutto il merito che meritano anche altri sviluppatori. –

+2

@Dmitri E il dojo? Mootools? :) jQuery è stata davvero la libreria che è esplosa nel mainstream, almeno da quello che posso dire. –

7

Concatenamento! Le enormi catene jQuery sono incredibili. A volte non posso fermarmi. Sembra quasi come fare tutto in una riga (lo vuoi, non negarlo).

this.lasso = $('<div/>') 
    .css({ position: 'absolute', overflow: 'hidden' }) 
    .addClass('ui-crop-lasso') 
    .hide() 
    .appendTo('body') 
    .resizable({ 
     handles: 'all', 
     start: setLasso, 
     stop: setLasso, 
     resize: setLasso, 
     minHeight: 50, 
     minWidth: 50 
    }) 
    .draggable({ 
     containment: el, 
     cursorAt: 'move', 
     drag: setLasso 
    }); 

Provalo, sarai assuefatto in poco tempo.

+2

In nessun modo è incredibile il codice ENORME. – Seb

+3

Codice enorme? Questa è una singola riga di JQuery che rende qualcosa ridimensionabile, trascinabile, gli dà una classe e stili hard coded e lo inserisce nel DOM. Anche se questo potrebbe non essere sempre l'approccio migliore, è incredibilmente versatile. – Soviut

+1

@Seb la cosa su concatenamento jQuery è che è leggibile e diretto (se usato correttamente). – jskulski

3

Il modo in cui gli oggetti jQuery funzionano indipendentemente dall'essere nessuno, uno o più elementi DOM in esso contenuti.

Inoltre, la gestione di eventi rocce. Essere in grado di restituire solo eventi falsi su clic, ad esempio, rocce.

+1

anche la funzione "return false" è una funzione vanilla JavaScript, lo sai. prova questo: .. nickf

+1

+1, penso che tu intenda dire "iterazione implicita" nel tuo primo punto, che tu sei l'unica persona ad aver segnalato. La mia funzione preferita di gran lunga. – karim79

+0

@nickf: quando si collegano eventi solo con javascript, tuttavia, non è così facile. Dai un'occhiata a come ad es.prototipo lo fa, devi passare falso come argomento o qualcosa del genere. –

6

Il sistema di plugin è incredibile. Tecnicamente potresti essere, e rimanere, un novizio JQuery completo e sfruttare ancora la maggior parte, se non la totalità, della sua potenza tramite l'applicazione di plugin. Ciò lo rende molto popolare con artisti e non programmatori che cercano solo di aggiungere un suggerimento, una finestra di dialogo modale, lightbox, menu a discesa, ecc.

+0

Proprio come una nuova Ferrari. Ti permette di andare incredibilmente veloce, fino a quando non ti rompi in un muro a 140 miglia all'ora perché non sai come trasformare –

+0

Sono d'accordo, ma questo può essere il caso con qualsiasi lingua o strumento però. L'ho trovato più utile per il principiante che "vuole solo una lightbox" e non vuole dover imparare un sacco di javascript per implementarlo. JQuery ha un grande fascino per i non programmatori e artisti per questo motivo esatto. – Soviut

+1

Trovo anche abbastanza conciso che la mia risposta sia stata downvoted due volte. Solo perché i plug-in possono dare al codificatore amatoriale una corda sufficiente per impiccarsi, dà al veterano esperto un kit di strumenti molto potente. – Soviut

1

Non esattamente una funzionalità, ma la quantità di plug-in già scritti e informazioni sulla comunità su come usare jQuery è sicuramente un bonus. In caso contrario, i selettori e il sistema plug-in.

2

Come nuovo arrivato a jQuery, deve essere il plug-in jQuery UI e i temi che le persone hanno progettato per utilizzarlo. ThemeRoller consente di adattare rapidamente i temi e riprodurre scenari "what if" con l'applicazione come viene visualizzata in Firefox. Sono stato in grado di migliorare enormemente un'applicazione web attraverso l'uso di schede, cursori di fisarmoniche, datatori e avvisi in un solo giorno o due a partire da nessuna conoscenza di jQuery.

Gli sviluppatori web più esperti apprezzeranno la filosofia jQuery di "JavaScript non invadente", il suo rigoroso utilizzo di XHTML e CSS, i selettori e il concatenamento.

17

Creazione di un elemento HTML e mantenere un riferimento:

var newDiv = $('<div></div>'); 
newDiv.attr("id","myNewDiv").appendTo("body"); 
//Now whenever I want to append the new div I created, 
//I can just reference it from the 'newDiv' variable 

Verificando un elemento esiste:

if ($("#someDiv").length) { 
    //it exists... 
} 

Scrivere i propri selettori:

$.extend($.expr[':'], { 
    over100pixels: function(a) { 
     return $(a).height() > 100; 
    } 
}); 

$('.box:over100pixels').click(function() { 
    alert('The element you clicked is over 100 pixels high'); 
}); 
+1

scrivi i tuoi selettori? È abbastanza carino. – Andrew

12

Non doversi preoccupare (tanto) della compatibilità tra i diversi browser

0

Mi piace il fatto che tratta allo stesso modo principianti ed esperti allo stesso modo, in una certa misura. Se sai cosa stai facendo, però, puoi davvero far brillare un'applicazione in tutti gli aspetti.Cose come caricamento lento, separazione dei codici e modelli possono essere eseguite con jQuery. È stato progettato come strumento DOM, ma può essere facilmente adattato per essere assegnato a un namespace e fungere da framework js a stack completo.

In breve, penso che la caratteristica migliore di jQuery sia che è stato progettato da tutti gli angoli con l'idea della semplicità in mente. La risposta più semplice è solitamente la migliore risposta.

2

Principalmente cose che richiedono un sacco di test e tweaking su più browser, che non mi è possibile scrivere come affidabile e testare così ampiamente come fa la comunità jQuery. Ciò include:

  • $ (documento) .ready (...). Guarda l'implementazione di questa funzione. Esistono molte istruzioni if-else che controllano varie funzionalità del browser.

  • Metodi di posizione e dimensione: $ (...). Offset(), $ (...). Position(), $ (...). Width(), $ (...). innerWidth() ecc. Di nuovo, la stessa storia qui. Inoltre, funzionano in modo affidabile (o presumo più attendibilmente che sarei in grado di raggiungere me stesso) per casi speciali come finestre e documenti.

  • $ (...). Animare(). La possibilità di animare elementi basati su qualsiasi (ragionevole) stile CSS. Anche concatenamento di animazioni e $ (...). Stop(). API molto fluente.

  • Gestori di eventi. Questo è qualcosa che ogni libreria JavaScript ha, e non è qualcosa che non si possa implementare da solo, ma è bello averlo.

Ci sono anche alcune funzioni meno preferite. Uno di questi è il concatenamento di funzioni che sembra essere lo stile di programmazione jQuery semi-ufficiale. Può sembrare impressionante a prima vista, ma nel complesso non è qualcosa che non puoi fare usando variabili e dichiarazioni separate e alla fine, a mio parere, porta a un codice meno leggibile.

Un'altra piccola cosa che mi piace di meno è l'entusiasmo nell'usare chiusure e funzioni anonime profondamente annidate. Potrebbe essere più difficile leggere tale codice dopo una settimana. Potrebbe non essere immediatamente ovvio da dove provengono alcune variabili e quali sono gli ambiti delle funzioni. Prova a preparare una fonte jQuery più elaborata per vedere cosa intendo.

Anche se uno dei punti di forza di jQuery è i selettori, trovo che non ne ho bisogno così spesso, e se ne ho bisogno, di solito passo avanti con quelli di base.

Infine, la manipolazione DOM di jQuery ha alcune utilità utili, ma nel complesso, penso che si potrebbe ottenere lo stesso con un po 'di codice in più (anche se noioso). So che probabilmente mi semplificherò eccessivamente, ma non sembra che ci siano alcuni problemi di cross-browser.

+0

con l'uso di indentazione appropriata, trovo che lo stile di codifica dell'affermazione concatenata possa essere ancora più leggibile rispetto al codice normale. – nickf

1

selettori con il supporto per i CSS 1-3 e XPath combinato e le proprie selettori personalizzati!

// "odd" numbered rows in a table with class "orders" 
jQuery('table.orders tr:odd') 

// All external links (links that start with http://) 
jQuery('a[@href^="http://"]') 
+3

che il secondo esempio è diventato deprecato (o abbandonato del tutto?) Dalla versione 1.2. jQuery ('a [href^= "http: //"]') è il modo corretto ora (stile CSS, piuttosto che XPath). – nickf

4

Mi piace l'aspetto di jQuery di rimuovere i gestori di eventi da HTML per separare il contenuto dal comportamento.Invece di scrivere

<p class="active" onclick="myFunction()">foo</p> 

numerose volte su una pagina web, posso scrivere questo, invece:

<p class="active">foo</p> 

e scrivere questo una volta dentro i miei tag script:

$(".active").click(function(){ ... }); 

Perché mi piace questo meglio? Perché jQuery separa il contenuto dalla funzionalità nello stesso modo in cui CSS separa il contenuto dallo stile. E come Jan Zich e altri menzionano, jQuery rende molte delle funzionalità molto facili da programmare per qualsiasi browser, quindi ad esempio l'animazione diventa un gioco da ragazzi quando si desidera simulare schede che visualizzano/nascondono i div in una pagina per l'utente.

2

Regex nei selettori (da quando ho usare ASP.Net ed i controlli sono ridicoli, ID resi.)

per ottenere questo in jQuery:

<asp:TextBox ID="txtTest" runat="server" /> 

Io faccio solo questo:

$("input[id$='txtTest']") 

Mi ha fatto cambiare la mia prospettiva sul fare cose lato client sui siti web.

+2

Sono costantemente confuso da voi ASP.Net ragazzi e dal vostro html generato. – nickf

+0

È l'unico modo in cui il motore può gestire i controlli annidati e quant'altro. Suppongo che potrebbe controllare tutto ciò che è usato nella pagina per verificare l'univocità del tempo di sviluppo, ma ci vorrebbe una buona dose di CPU per farlo. – Gromer

+2

Ma in entrambi i casi, odio il markup generato da ASP.Net. Un sacco. – Gromer

1

sistema di plug-in:

((function($){ 
    $.fn.plugin = function(){ 
     return this.each(function(){ 
      //code here 
     }); 
    } 
})(jQuery) 

catena:

$('.parent').children().remove().end().css('background-color', 'red'); 

compatibilità cross-browser attraverso varietà di funzioni, ad esempio. Ajax

$.GET('url', {data: 'here'}, function(data){ /* callback */ }); 
1

valori relativi nel funciton animate:

$('div.class:hover').animate({ height: '+=10', width: '+=10', opacity: '-=.5' }) 
Problemi correlati