Avatar billede smaakagemorten Nybegynder
12. februar 2013 - 08:51 Der er 4 kommentarer og
1 løsning

Krydse af i en checkbox og så tilføje en class

Nu er jeg rimelig nybegynder til javascript og jquery, men jeg har en liste med forskellige ting, hvor der skal komme en lang streg henover den når man checkboxen er checked.

Jeg kan godt få den til at tilføje en class til alle checkboxene, men jeg kan ikke få den til at tilføje en class til den label som den tilhører, er der nogen der kan hjælpe med det?

Det hele skal jo gøres dynamisk, fordi man skal kunne tilføje og slette punkter, så jeg kan jo ikke sidde og tilføje lidt javascript til hvert nyt menupunkt.

--
Morten
Avatar billede smaakagemorten Nybegynder
12. februar 2013 - 08:53 #1
HTML:

<form>
  <div>
    <input type="checkbox" name="fruit" value="orange" id="orange">
    <label for="orange">orange</label>
  </div>
  <div>
    <input type="checkbox" name="fruit" value="apple" id="apple">
    <label for="apple">apple</label>
  </div>
  <div>
    <input type="checkbox" name="fruit" value="banana" id="banana">
    <label for="banana">banana</label>
  </div>
  <div id="log"></div>
</form>

Mit jquery ser sådan ud indtil videre:

<script>
    $( "input[type=checkbox]" ).click(function () {
      $( "label[for='banana']" ).each(function(){
        $( this ).toggleClass( "red" );
      });
    });
</script>
Avatar billede jakobdo Ekspert
12. februar 2013 - 09:48 #2
Tror du skal ud i noget ala:

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Checkbox</title>
  <meta charset="utf-8">
  <style>
    label.red {background-color:red;}
  </style>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>
  $(function() {
    $( "input:checkbox" ).click(function(){
      selected = $(this).prop("checked");
      if(selected){
        $(this).next().addClass("red");
      }else{
        $(this).next().removeClass("red");
      }
    });
  });
  </script>
</head>
<body>
<form>
  <div>
    <input type="checkbox" name="fruit" value="orange" id="orange">
    <label for="orange">orange</label>
  </div>
  <div>
    <input type="checkbox" name="fruit" value="apple" id="apple">
    <label for="apple">apple</label>
  </div>
  <div>
    <input type="checkbox" name="fruit" value="banana" id="banana">
    <label for="banana">banana</label>
  </div>
  <div id="log"></div>
</form>
</body>
</html>
Avatar billede smaakagemorten Nybegynder
12. februar 2013 - 09:55 #3
Jamen fantastisk! Det var lige det jeg ledte efter. Jeg lærer godt nok noget nyt hele tiden med det her javascript :P
Avatar billede jakobdo Ekspert
12. februar 2013 - 09:57 #4
Og min js er bestemt ikke perfekt og nogle vil sige jquery aldrig bliver perfekt. Men det virker. :o)

Takker for point.
Avatar billede olebole Juniormester
12. februar 2013 - 19:50 #5
<ole>

Uden jQuery kan det skrives:

<!DOCTYPE html>
<html>
<head>
<title>Checkbox</title>
<meta charset="utf-8">
<style>
label.red {background-color:red;}
</style>
<script>
function setLabel(evnt) {
    var elm = document.elementFromPoint(evnt.clientX, evnt.clientY);
    if (elm.nodeName==="INPUT" && elm.type==="checkbox") {
        while (elm.nodeName!=="LABEL") elm = elm.nextSibling;
    }
    if (elm.nodeName!=="LABEL") return;
    elm.className = document.getElementById(elm.htmlFor).checked ? "red" : "";
}
</script>
</head>
<body onclick="setLabel(event)">
<form>
  <div>
    <input type="checkbox" name="fruit" value="orange" id="orange">
    <label for="orange">orange</label>
  </div>
  <div>
    <input type="checkbox" name="fruit" value="apple" id="apple">
    <label for="apple">apple</label>
  </div>
  <div>
    <input type="checkbox" name="fruit" value="banana" id="banana">
    <label for="banana">banana</label>
  </div>
  <div id="log"></div>
</form>
</body>
</html>

- hvilket er giver mulighed for at lære 'ren' JavaScript/DOM uden jQuery's proprietære syntaks  =)

/mvh
</bole>
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows