Avatar billede riefart Seniormester
30. december 2014 - 17:05 Der er 8 kommentarer og
1 løsning

Problem med JQuery dialog-boks

Jeg har forsøgt at få dialog-boks-JQuery'et hentet her:  http://jqueryui.com/dialog/ til at virke på et projekt, jeg leger med - kan ses her: http://web-legestuen.dk/shopping/web-shop.php

Jeg henter en række poster fra en sql-database som bliver skrevet ud på siden, og vil have mulighed for at highlighte yderligere information i en dialogboks, når der klikkes på knappen "Mere information".

Imidlertid åbnes alle dialogboksene på alle poster, når der klikkes på en enkelt.
Hvad gør jeg galt? Og hvordan får jeg det rettet?

Lidt af den aktuelle kode er her:
<head>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
</head>
<body>
........
if($stmt=$mysqli->prepare('SELECT * FROM `produkter`'))
{
    $stmt->execute();
    $stmt->bind_result($id, $produktnummer,$kategori, $navn,
    $beskrivelse, $info, $lagerstatus, $pris, $billede);
    while($stmt->fetch())
    {
        $beskrivelse=nl2br($beskrivelse);
        $lagerstatus="Lagerstatus: $lagerstatus";
        ?>

        <div><img class="varebillede" src="<?php echo $billede;?>" alt="" title="Vare-id: <?php echo $id;?>" /></div>
        <div class="navn"><?php echo $navn;?></div>
        <div class="beskrivelse"><?php echo $beskrivelse;?></div>
        <div class="pris">Pris DKK <?php echo $pris;?></div><br />
        <div class="kurveknap"><input type="button" value="Læg i kurv" onclick="addtocart(<?php echo $id;?>)" /></div>

      <!--herunder javascript til dialogfunktionen -->

      <button class="opener">Mere information</button>
      <div class="dialog" title="<?php echo $navn ?>"><?php echo $beskrivelse ?></div>

<script type="text/javascript">
      $( ".dialog" ).dialog({ autoOpen: false });
      $( ".opener" ).click(function() {
      $( ".dialog" ).dialog( "open" );
      });
</script>
           
<?php
    }
    $stmt->close();
}
Avatar billede keysersoze Guru
30. december 2014 - 18:29 #1
ud over at dit JavaScript bliver udskrevet alt for mange gange da det ligger inde i din while så har du ingen mulighed for at kende forskel på de enkelte dialoger da de alle sammen har samme klasse så du må sørge for dels at hver dialog kan genkendes unikt og dels at din opener ved hvilken den skal åbne, fx ved at sætte data-id på.
Avatar billede riefart Seniormester
30. december 2014 - 19:51 #2
Har nu lagt javascriptet udenfor while-sætningen, men med samme resultat som før. Kan du komme nærmere ind på hvad jeg skal gøre med et eksempel?
Også gerne på hvordan jeg sætter data-id, så opener'en kan kende den valgte post?
Avatar billede keysersoze Guru
30. december 2014 - 21:17 #3
javascriptet skulle du kun flytte ud for at undgå ligegyldig dublet-kode.

hvis du sætter data-id, eller hvad du end vil kalde attributten, på både opener og dialog kan du få fat i værdien med http://api.jquery.com/data/ og så benytte den i en selector sådan http://api.jquery.com/attribute-equals-selector/
Avatar billede riefart Seniormester
30. december 2014 - 23:16 #4
Kan du hjælpe med et konkret eksempel relateret til min kode i #1? Jeg er total novice udi javascript.
Avatar billede keysersoze Guru
31. december 2014 - 00:19 #5
dvs du slet ikke har forsøgt noget?
Avatar billede riefart Seniormester
31. december 2014 - 03:50 #6
Jo jeg har forsøgt at læse og sætte mig ind i de 2 links i #3. Jeg har bare så lidt indsigt i javascript at jeg kun i ringe grad forstår hvad der sker, og slet ikke hvordan jeg skal bruge det.
Avatar billede riefart Seniormester
01. januar 2015 - 20:37 #7
Jeg kom ikke tættere på en løsning af problemet med ovenstående, og har derfor valgt en helt anden løsning med et Jquery, som kan håndtere dataværdier i løkker.
Lukker.
Avatar billede keysersoze Guru
01. januar 2015 - 23:57 #8
godt - brug af jqueryui er også nærmest håbløst da det sjældent performer. Men derfor kunne du nu let vinde lidt ved at bruge lidt tid på basal jquery.
Avatar billede riefart Seniormester
02. januar 2015 - 13:53 #9
Det kommer jeg helt sikkert også til.
Må bare tage det i mindre portioner.
Men tak for links.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester