Implementeer eenvoudig een Live Search-effect

Het live-zoekeffect is geen nieuwigheid in desktop-apps. In Mac OS X of Windows Vista / 7 typt u een paar letters in een zoekvak, bijna onmiddellijk krijgt u het zoekresultaat meteen. Het klikken op de knop Verzenden is oud worden.

Deze tutorial laat je zien hoe je dit coole effect naar de webwereld brengt met jQuery. De code die in deze zelfstudie wordt gebruikt, is aangepast op basis van John Resig's Approach.


Livesearch-effect in Windows 7


Livesearch-effect in OS X


Kenmerken


  • Presenteert het zoekresultaat on the fly
  • Fuzzy zoeken
  • Super snel, geen AJAX-oproepen

Stap 1: de HTML

Om te beginnen, hebben we een paar HTML-elementen nodig, waaronder:

  • Een tekstinvoer, waarin we onze vragen typen.
  • Een ongeordende lijst, om het zoekresultaat te tonen

... en twee javascript-bibliotheken:

  • jQuery: Je moet dit op zijn minst weten om deze tutorial te voltooien.
  • Quicksilver Score: Dit prachtige script bootst het beroemde Quicksilver-zoek-algoritme op Mac na. Het geeft aan of twee tekstreeksen relevant zijn en hoe relevant. Het is net een mini-google in één js-bestand. Gebruikers houden allemaal van fuzzy zoeken, toch? En ze vinden het allemaal leuk om zoekresultaten te tonen van de meest relevante tot de minste. Dank aan het geweldige werk van Lachie Cox!

Last but not least hebben we een aantal items nodig om uit te zoeken. Laten we in deze zelfstudie de namen van veel webframeworks gebruiken als dummygegevens, OK? (Zie de lijst van deze kaders)

De "search-from" -gegevens kunnen worden verstrekt in arrays, JSON's of in welke vorm dan ook, zolang ze maar kunnen worden doorgelust in javascript. Multidimensionale arrays kunnen ook worden gebruikt. Maar voor het gemak van demonstratie en begrip, zijn de gegevens die in deze tutorial worden gebruikt een eenvoudige eendimensionale array die "items" wordt genoemd.

En tot slot, hier is de HTML. Besteed aandacht aan waar de twee JS-bibliotheken worden opgenomen. Opmerking: CSS is niet het belangrijkste onderdeel van dit effect, dus we zullen geen seconde besteden aan styling. Ze zijn verkleind. Ik hoop dat dit je niet zal storen of afleiden. Laten we ons concentreren op HTML en JS.

Sla de volgende code op in een html-bestand en laten we beginnen!

     jQuery Livesearch-effect    

jQuery Livesearch Demo

Vind uw favoriete webraamwerk

<-- Type in here and get search results LIVE!

    Stap 2: Firebug is onze beste vriend!

    Als javascript-man kun je vandaag niet leven zonder Firebug. Het is absoluut een must voor iedereen die met jQuery werkt. Je kunt deze tutorial voltooien zonder dat firebug is geïnstalleerd. Maar met firebug kunnen we veel achter-de-scène dingen zien, wat essentieel is om het zoeken in dit effect te begrijpen.

    Weet je nog de dummy items om uit te zoeken? Ja, de framenamen. Laten we controleren of ze op de juiste plaats zijn met Firebug:

    1. Open het HTML-bestand met Firefox.
    2. Open Firebug en schakel over naar "Console" -paneel (ctrl + shift + c).
    3. Typ "items" (zonder aanhalingstekens) in het vak aan de rechterkant en klik op "Uitvoeren".

    Je zou iets moeten zien in de afbeelding hieronder. Firebug print de "items" -variabele die een array is. Ja, onze framenamen zijn daar precies op hun plaats. Laten we verder gaan!



    Stap 3: De logica

    Laten we het nu hebben over de logica. Om dit effect te laten werken, moet een reeks dingen gebeuren:

    1. Gebruiker raakt een sleutel.
    2. We krijgen de tekst van het zoekvak. Laten we deze "query" noemen.
    3. Aan elke framenaam controleren we of de query relevant is en hoe relevant deze is.
    4. We filteren relevante framenamen en sorteren ze op basis van relevantie.
    5. We presenteren het resultaat aan de gebruiker.

    Makkelijk, hah? Behalve voor een ding. Als ik naar een kader met de naam "cake" zoek, wordt de bovenstaande logica uitgevoerd, één cyclus per letter, in totaal 4 cycli, toch? Maar de eerste 3 cycli zijn volledig overbodig, alleen om de prestaties op een grote manier te verminderen. Om dit te voorkomen, wachten we tot de gebruiker stopt met het intoetsen voordat onze logica wordt geactiveerd. En als een gebruiker stopt met het intoetsen van 0,2 seconden, nemen we aan dat hij klaar is. Tot op dit punt is onze logica delicaat genoeg. Het is tijd om je handen vuil te maken en te beginnen met coderen!


    Stap 4: Event Listening

    In het echte leven kan luisteren uiterst belangrijk zijn. Dit geldt ook in de wereld van jQuery, waar alles begint met het luisteren naar een evenement.

    Zoek naar "placeholder" in het HTML-bestand. Zet de volgende code op die plaats.

    De volgende code luistert naar de key-upgebeurtenis. Gooi ze tussen dee