Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JQuery] Checkbox reaguje tylko dla pierwszego attr
KotWButach
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

Ostrzeżenie: (0%)
-----


No i mi głupio ale muszę was prosić o jeszcze jedną podpowiedź.

Mam taki kod. Jednak checkbox działa tylko za pierwszym zaznaczeniem i odznaczeniem potem już niestety nie reaguje (IMG:style_emoticons/default/sad.gif)

  1. $(".edit li:nth-child(1)").click(function() {
  2. $('input[type=checkbox]').attr('checked', false); // zmiana
  3. alert();
  4. $('input[type=checkbox]').attr('checked', true); // zmiana
  5. alert();
  6. $('input[type=checkbox]').attr('checked', false); // nie zmienia stanu
  7. alert();
  8. $('input[type=checkbox]').attr('checked', true); // nie zmienia stanu
  9. alert();
  10.  
  11. return false;
  12. });
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Do zaznaczenia powinienes uzyc
$('input[type=checkbox]').attr('checked', 'checked');

zas do odznaczenia
removeAttr('checked')
Go to the top of the page
+Quote Post
KotWButach
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

Ostrzeżenie: (0%)
-----


Niestety w dalszym ciągu reaguje tylko na pierwsze dwa (IMG:style_emoticons/default/sad.gif)

  1. $(".edit li:nth-child(1)").click(function() {
  2. $('input[type=checkbox]').attr('checked', 'checked'); // zmiana
  3. alert();
  4. $('input[type=checkbox]').removeAttr('checked'); // zmiana
  5. alert();
  6. $('input[type=checkbox]').attr('checked', 'checked'); // nie zmienia stanu
  7. alert();
  8. $('input[type=checkbox]').removeAttr('checked'); // nie zmienia stanu
  9. alert();
  10.  
  11. return false;
  12. });
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Albo:
  1. element.prop('checked', true/false);


A tu:
  1. $('input[type="checkbox"]')

Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




To jest dokladny kod jaki masz? Z tymi pustymi alert() pomiedzy?
Go to the top of the page
+Quote Post
KotWButach
post
Post #6





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

Ostrzeżenie: (0%)
-----


alerty powstawiałem tylko po to by widzieć czy coś się zmienia nie muszę dzięki temu klikać co chwila. Taka testowa funkcja.

Pomogło
  1. $('input[type="checkbox"]').prop('checked', true/false);


Dziękuje wszystkim za pomoc.

Jednak wciąż nie rozumiem dlaczego poprzednie wersje nie działały szkoda (IMG:style_emoticons/default/sad.gif) .

Ten post edytował KotWButach 2.07.2014, 12:04:22
Go to the top of the page
+Quote Post
by_ikar
post
Post #7





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Bo jquery attr działa trochę "magicznie" do wersji 1.6. I jak masz powiedzmy textarea w którym masz atrybut value:

  1. <textarea value="test"></textarea>


To jak użyłeś takiego kodu jquery:

Kod
console.log($('textarea ').attr('value'))


to do wersji 1.6 w konsoli mogłeś zobaczyć pusty string, ponieważ jqury pobierało wartość tą, która znajdowała się pomiędzy textarea, zamiast pobierać wartość z atrybutu. A całość ma swoje podłoże w różnicy między właściwościami znacznika, a jego atrybutami. Tak przykładowo:

  1. <input type="checkbox" checked>
  2. <input type="checkbox" checked="checked">


oba checkboxy będą zaznaczone, bo checkbox z samym checked jest właściwością znacznika, i nie pobierzesz jego wartości poprzez attr, z kolei checkbox z wartością jest już atrybutem. No wprowadzało (i nadal wprowadza, bo wielu ludzi korzysta z starej wersji jquery) wiele zamieszania i tworzyło niepotrzebną magię..

Ten post edytował by_ikar 2.07.2014, 15:46:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 07:59