jQuery removeAttribute () не работает - PullRequest
1 голос
/ 17 февраля 2012

Я отчаянно искал ответ на этот вопрос, но ничего не нашел. В настоящее время я совершенствую код на создаваемом веб-сайте, переключаясь с атрибутов "custom" на атрибуты data-yyy в HTML5. Теперь вот моя проблема.

 $("#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");
        }
    });

Следующий код запускается при нажатии определенного элемента li. Класс переключается, и после переключения (это слово?) Скрипт проверяет, имеет ли этот элемент переключаемый класс или нет. Если у него нет класса (вот в чем проблема), сценарий должен удалить атрибут «data-special», удалив данные. Такого не бывает вообще!

Если добавить

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

вне функции, все нормально и работает как положено. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

Вы импортировали значение data-special в .data(), поэтому используйте .removeData().

$(this).removeData("special");

После импорта значения атрибута в .data(), вам нужно работать с ним там.Удаление атрибута не удаляет .data().

Если вам нужно было удалить их оба, вам нужно будет вызвать оба метода или просто не использовать .data() во-первых.

1 голос
/ 17 февраля 2012

Это не атрибут

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

Вы храните это в кеше jquery.поэтому, если вы хотите удалить его, вы должны сделать так, как указано на другом плакате, и использовать функцию removeData, чтобы удалить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...