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?
2 odpowiedzi
Zaimportowałeś wartość data-special
do .data()
, więc użyj .removeData()
< /a>.
$(this).removeData("special");
Po zaimportowaniu wartości atrybutu do .data()
musisz tam pracować. Usunięcie atrybutu nie usuwa .data()
.
Jeśli chcesz, aby oba zostały usunięte, musisz wywołać obie metody lub po prostu nie używać .data()
w pierwszej kolejności.
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ć.
Podobne pytania
Nowe pytania
jquery
jQuery to biblioteka JavaScript, rozważ także dodanie tagu JavaScript. jQuery to popularna biblioteka JavaScript działająca w różnych przeglądarkach, która ułatwia przechodzenie przez Document Object Model (DOM), obsługę zdarzeń, animacje i interakcje AJAX, minimalizując rozbieżności między przeglądarkami. Pytanie oznaczone tagiem jQuery powinno być powiązane z jQuery, więc jQuery powinno być używane przez dany kod i przynajmniej elementy związane z użyciem jQuery muszą znajdować się w pytaniu.