Permalänk
Medlem

jquery, byta innehåll i en div.

Jag har en sida med en meny med knappar gjord med lite css. Det är alltså en html-fil och en css fil. Vad jag förstår ska jag använda jquery för att byta innehåll i min div som heter "main" men jag vet inte hur. Jag vill att innehållet ska växlas när man trycker på något i menyn. Jag hittar kod som visar hur. Men jag vill förstå koden också. Hjälp!:O

Visa signatur

Chassie: Cooler Master Storm Scout. CPU: Intel Core I5 2500K @ 3.3 Ghz. RAM: Corsair Vengeance 2x4gb 1600mhz. MK: MSI P67A-GD65. PSU: Corsair cx 500w v2. GPU: GeForce GTX 560 Ti. HDD: 1 Tb WD green 64mb cache. Monitor: Samsung Syncmaster P2450

Permalänk
Medlem

Jadu, att visa upp koden du hittat gör det nog lättare för någon att förklara den.

Permalänk
Medlem
Skrivet av Nikkop:

Jadu, att visa upp koden du hittat gör det nog lättare för någon att förklara den.

Lite skitsamma eftersom de jag sett inte verkar göra det jag vill..

Visa signatur

Chassie: Cooler Master Storm Scout. CPU: Intel Core I5 2500K @ 3.3 Ghz. RAM: Corsair Vengeance 2x4gb 1600mhz. MK: MSI P67A-GD65. PSU: Corsair cx 500w v2. GPU: GeForce GTX 560 Ti. HDD: 1 Tb WD green 64mb cache. Monitor: Samsung Syncmaster P2450

Permalänk
Medlem

Du verkar osäker på vad du faktiskt vill åstadkomma.
Vill du helt enkelt "byta sida" när du klickar på en knapp i menyn?

Enklaste är att göra på det vanliga sättet, att använda nya HTML filer för varje sida, t.ex "about.html", och länka den till menyknappen.

Att använda jQuery innebär att man måste dölja "main" rutan och sedan visa en annan, t.ex "about" ruta, detta utan att man byter HTML dokument.

Visa signatur

Canon 70D | 2x Dell Ultrasharp 24" | Ryzen 3700X | 32B | GTX 1080Ti

Permalänk
Medlem
Skrivet av Nikkop:

Jadu, att visa upp koden du hittat gör det nog lättare för någon att förklara den.

Det behöver han inte visa.

Skrivet av Jespuur:

Jag har en sida med en meny med knappar gjord med lite css. Det är alltså en html-fil och en css fil. Vad jag förstår ska jag använda jquery för att byta innehåll i min div som heter "main" men jag vet inte hur. Jag vill att innehållet ska växlas när man trycker på något i menyn. Jag hittar kod som visar hur. Men jag vill förstå koden också. Hjälp!:O

Har du någon gång arbetat med jQuery? Om inte, så är jQuery en lättare variant av JavaScript. Båda tillhör samma "familj", så att säga (jQuery bygger på JavaScript). För att kunna börja använda jQuery på din webbsida, så måste du lägga till källkoden för jQuery på din webbsida. Den bästa och enklaste lösningen, är att använda Google Hosted Libraries.

När du väl har lagt till länkningen, kan du skriva inom <script type="text/javascript"> och </script> följande kod:

$(document).ready(function() { // ... });

Nu rättar sig webbsidan efter jQuery-biblioteket och även JavaScript. jQuery bygger ju som sagt på JavaScript, så du kan kombinera båda två. Koden nedan gör exakt det du vill att den ska göra.

<a href="javscript:void(0)" id="menu" data="start">Start</a><br> <a href="javscript:void(0)" id="menu" data="about">Om</a><br><br> <div id="content"></div> $(document).ready(function() { // KLICK: Besökaren har klickat på någon länk i menyn $('body').on('click', '#menu', function() { // MENY: Start if($(this).attr('data') == 'start') { $('#content').html('Start'); // MENY: Om } else if($(this).attr('data') == 'about') { $('#content').html('Om'); } }); });

Du kan se hur koden ovan funkar på jsFiddle. Som du kan se, så behöver du inte byta DIV-tagg, utan du kan enkelt byta ut själva innehållet i DIV-taggen

-- -- -- --

Uppdatering
Om du vill göra så som Florrpan nämnde, om att hämta text från en fil, till DIV-taggen, så kan du använda följande kod:

<a href="javscript:void(0)" id="menu" data="start">Start</a><br> <a href="javscript:void(0)" id="menu" data="about">Om</a><br><br> <div id="content"></div> $(document).ready(function() { // KLICK: Besökaren har klickat på någon länk i menyn $('body').on('click', '#menu', function() { $.ajax({ url: $(this).attr('data') + '.html', // $(this).attr('data') är namnet på filen, enligt länkens data="" method: 'GET', success: function(s) { $('#content').html(s); }, error: function(e) { alert(e); } }); }); });

Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me /device:desktop. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Medlem

Man kan också lösa det med jQuery + Ajax där du gör som vanligt d.v.s. du har olika html filer för olika sidor där sedan du bygger en "index" med framework, alltså det som finns på alla sidor (meny etc) och sedan använder ajax för att injekta kod i rätt plats. Blir som edgren skrev fast du tar in då hela filer.

Detta kan sedan fint expanderas med att ha lyssnare varje gång ajax laddar en sida för att sedan visa en fin loading information, hantera disconnects (om du är på mobil) och mycket mer.

http://www.w3schools.com/jquery/ajax_load.asp

Visa signatur

Arch - Makepkg, not war -||- Gigabyte X570 Aorus Master -||- GSkill 64GiB DDR4 14-14-15-35-1T 3600Mhz -||- AMD 5900x-||- Gigabyte RX6900XT -||- 2x Adata XPG sx8200 Pro 1TB -||- EVGA G2 750W -||- Corsair 570x -||- O2+ODAC-||- Sennheiser HD-650 -|| Boycott EA,2K,Activision,Ubisoft,WB,EGS
Arch Linux, one hell of a distribution.

Permalänk
Medlem
Skrivet av Airikr:

Det behöver han inte visa.

Skrivet av Jespuur:

Lite skitsamma eftersom de jag sett inte verkar göra det jag vill..

I huvudinlägget skrivs det "Jag hittar kod som visar hur. Men jag vill förstå koden också.". Om du har hittat en kod, och du vill förstå den, hur ska vi förklara den om vi inte får se koden? Det var det jag menade, att det blir lite svårt att förklara en specifik kod vi inte får se. Att ta fram en ny Jquery kodsnutt är en annan femma

Permalänk
Medlem
Skrivet av Airikr:

Har du någon gång arbetat med jQuery? Om inte, så är jQuery en lättare variant av JavaScript.

jQuery är "en lättare variant av JavaScript" på samma sätt som chokladglass är en lättare variant av glass.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Nikkop:

I huvudinlägget skrivs det "Jag hittar kod som visar hur. Men jag vill förstå koden också.". Om du har hittat en kod, och du vill förstå den, hur ska vi förklara den om vi inte får se koden? Det var det jag menade, att det blir lite svårt att förklara en specifik kod vi inte får se. Att ta fram en ny Jquery kodsnutt är en annan femma

Aha! Ja. Jag var rätt så trött när jag skrev det där inlägget och läste igenom hans fråga och ditt svar

Skrivet av Teknocide:

jQuery är "en lättare variant av JavaScript" på samma sätt som chokladglass är en lättare variant av glass.

document.getElementById('menu').style.display = 'block';

Det där är mer omständigt än vad samma funktion i jQuery är:

$('#menu').show();

Så jQuery är en lättare variant av JavaScript

Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me /device:desktop. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Skrivet av Airikr:

document.getElementById('menu').style.display = 'block';

Det där är mer omständigt än vad samma funktion i jQuery är:

$('#menu').show();

Så jQuery är en lättare variant av JavaScript

jQuery är ett JavaScript bibliotek.

Permalänk
Medlem

Det är viktigt att märka ord Någon kan ju säga något fel på internet.

<a href="javscript:void(0)" id="menu" data="start">Start</a><br> <a href="javscript:void(0)" id="menu" data="about">Om</a><br><br> <div id="content"></div> $(document).ready(function() { // KLICK: Besökaren har klickat på någon länk i menyn $('body').on('click', '#menu', function() { $.ajax({ url: $(this).attr('data') + '.html', // $(this).attr('data') är namnet på filen, enligt länkens data="" method: 'GET', success: function(s) { $('#content').html(s); }, error: function(e) { alert(e); } }); }); });

Det de där kommer inte funka så bra, det är dumt att ha flera element med samme ID.

(Korrigerar enbart så att TS inte skall skriva fel kod som kanske inte funkar, inte för att vara messerschmidt)

Jag skulle gjort så här:

<div id="mainmenu"> <a href="javscript:void(0)" class="menu-link" data-page="start">Start</a><br> <a href="javscript:void(0)" class="menu-link" data-page="about">Om</a><br><br> </div> <div id="content"></div> <script> function BindMainMenu() { $("#mainmenu a").on("click", OpenMenuPage); } function OpenMenuPage() { var button = $(this); var pagename = button.attr("data-page") || ""; if(pagename != "") { LoadPage(pagename); } } function LoadPage(pagename) { $("#content").load(pagename + ".html"); } $(function() { BindMainMenu(); }); </script>

Permalänk
Skrivet av Ernesto:

Det är viktigt att märka ord Någon kan ju säga något fel på internet.

<a href="javscript:void(0)" id="menu" data="start">Start</a><br> <a href="javscript:void(0)" id="menu" data="about">Om</a><br><br> <div id="content"></div> $(document).ready(function() { // KLICK: Besökaren har klickat på någon länk i menyn $('body').on('click', '#menu', function() { $.ajax({ url: $(this).attr('data') + '.html', // $(this).attr('data') är namnet på filen, enligt länkens data="" method: 'GET', success: function(s) { $('#content').html(s); }, error: function(e) { alert(e); } }); }); });

Det de där kommer inte funka så bra, det är dumt att ha flera element med samme ID.

(Korrigerar enbart så att TS inte skall skriva fel kod som kanske inte funkar, inte för att vara messerschmidt)

Jag skulle gjort så här:

<div id="mainmenu"> <a href="javscript:void(0)" class="menu-link" data-page="start">Start</a><br> <a href="javscript:void(0)" class="menu-link" data-page="about">Om</a><br><br> </div> <div id="content"></div> <script> function BindMainMenu() { $("#mainmenu a").on("click", OpenMenuPage); } function OpenMenuPage() { var button = $(this); var pagename = button.attr("data-page") || ""; if(pagename != "") { LoadPage(pagename); } } function LoadPage(pagename) { $("#content").load(pagename + ".html"); } $(function() { BindMainMenu(); }); </script>

Ska man fortsätta att messerschmidt'a sig så.
Ett par tumregler i JavaScript:
Använd '===' och '!==', inte '==' eller '!='.
Slå ihop variabeldeklarationer

var button = $(this), pagename = button.attr("data-page") || "";

"LoadPage", "BindMainMenu" och "OpenMenuPage", börja inte med versal då det antyder att det är en konstruktor och nyckelordet new ska användas.
Kapsla in metoderna istället för att ha de globala.

Permalänk
Medlem
Skrivet av Ernesto:

Det är viktigt att märka ord Någon kan ju säga något fel på internet.

Jag tror de flesta nykomlingar uppskattar att man ger dem korrekt information, tror inte du det? Det ena är ett språk (javascript för att vara övertydlig) och det andra ett bibliotek som bygger på det förstnämnda. Det är alltid javascript som programmeras, inte en avart som heter jQuery

Att förstå ett sådant sammanhang är essentiellt för att man ska kunna bygga en gedigen uppfattning om vad man egentligen pysslar med.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Inaktiv
Skrivet av Airikr:

Har du någon gång arbetat med jQuery? Om inte, så är jQuery en lättare variant av JavaScript.

Wat. jQuery är ett bibliotek som är skrivet i javascript, inte en variant av javascipt. Läs på innan du börjar hävda saker hit och dit.

Permalänk
Medlem
Skrivet av Ernesto:

Det de där kommer inte funka så bra, det är dumt att ha flera element med samme ID.

Varför funkar det utan några som helst problem för min del då?

Skrivet av Haikarainen:

Wat. jQuery är ett bibliotek som är skrivet i javascript, inte en variant av javascipt. Läs på innan du börjar hävda saker hit och dit.

jQuery är ett bibliotek som är skrivet i JavaScript, ja, men jag ser det mer som en lättare variant av JavaScript. Samma grund, fast enklare.

Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me /device:desktop. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Medlem
Skrivet av Airikr:

Varför funkar det utan några som helst problem för min del då?

För att webbläsaren förstår vad du menar, trots att det är fel. Man ska dock inte lita på att webbläsaren alltid korrigerar ens misstag.

Permalänk
Inaktiv
Skrivet av Airikr:

jQuery är ett bibliotek som är skrivet i JavaScript, ja, men jag ser det mer som en lättare variant av JavaScript. Samma grund, fast enklare.

Isåfall har du en skev teknisk syn på det, och du bör överväga om det är lämpligt att uttrycka den synen till folk i syfte att lära ut dom. Sen är det helt fel också, dom bygger inte alls på samma grund. Javascript "bygger på" webbläsarimplementationer, medans jQuery "bygger på" javascript. Jag vill inte förnärma dig eller så men du är helt ute och cyklar grabben.

Det är som att säga att boost är en variant av C++, och säga att boost och C++ har samma grund fast boost är enklare. Det är skrattretande, Boost är ett bibliotek till C++ och jQuery är ett bibliotek till Javascript.

Däremot håller jag med dig om att det ÄR enklare att jobba med jQuery som verktyg när man skriver Javascript, än att införa sina egna implementationer i Javascript och använda dem.

Permalänk
Medlem

Jag brukar använda PHP. Såhär kan t.ex. index.php se ut:

<nav> <a href='index.php?p=home'>Home</a> <a href='index.php?p=about'>About</a> </nav>

<div class='content'> <?php $page = $_GET['p']; $pages = array('home','about'); if (!empty($page)) { if(in_array($page,$pages)) { $page .= '.php'; include_once('res/p/'.$page); } else { header("Location: index.php?p=home"); } } else { header("Location: index.php?p=home"); } ?> </div>

Sen skapar jag bara respektive php fil i t.ex. /res/p/(home.php , about.php)