Desperacko szukałem odpowiedzi na to pytanie, ale nic nie znalazłem. Obecnie poprawiam kod tworzonej przeze mnie strony internetowej, przechodząc z atrybutów ,,custom'' na atrybuty HTML5 data-yyy. Oto mój problem.

 $("#test ul li").click(function(event){
        $(this).toggleClass("selected");
        if($(this).hasClass("selected")){
            if(jQuery.trim($("#input_value").val())){
                $(this).data("special",{"value":jQuery.trim($("#input_value").val())});
            }
        }
        else{
            $(this).removeAttr("data-special");
        }
    });

Poniższy kod jest uruchamiany po kliknięciu określonego elementu li. Klasa jest przełączana, a po przełączeniu (czy to słowo?) skrypt sprawdza, czy ten element ma przełączaną klasę, czy nie. Jeśli nie ma klasy (w tym jest problem), skrypt powinien usunąć atrybut „data-special”, usuwając dane. Wcale tak się nie dzieje!

Jeśli dodaj

 $("#test ul li").removeAttr("data-special");

Poza funkcją wszystko jest w porządku i działa zgodnie z oczekiwaniami. Jakieś pomysły?

1
Benedikt Ómarsson 17 luty 2012, 05:15

2 odpowiedzi

Najlepsza odpowiedź

To nie jest atrybut

$(this).data("specjalne",{"value":jQuery.trim($("#input_value").val())});

Przechowujesz to w pamięci podręcznej jquery. dlatego jeśli chcesz go usunąć, musisz zrobić tak, jak wskazał inny plakat i użyć funkcji removeData, aby go wyeliminować.

1
Al Katawazi 17 luty 2012, 05:22