Обновление «ария нажата» кнопок интерфейса с разметкой / стилем - PullRequest
2 голосов
/ 13 апреля 2011

Я использую кнопки со стилем интерфейса - Like |Б |Я |U |в этом примере страница , и сгенерированная html-структура выглядит следующим образом:

<div class="radiocheck ui-buttonset">
<input type="radio" name="radio1" value="1" id="radio0" class="ui-helper-hidden-accessible">
<label for="radio0" aria-pressed="false" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left" role="button" aria-disabled="false">
    <span class="ui-button-text">Sobre</span>
</label>
<input type="radio" name="radio1" value="2" id="radio1" class="ui-helper-hidden-accessible">
<label for="radio1" aria-pressed="false" class="ui-button ui-widget ui-state-default ui-button-text-only" role="button" aria-disabled="false">
    <span class="ui-button-text">Politica</span>
</label>
<input type="radio" name="radio1" value="3" id="radio2" class="ui-helper-hidden-accessible">
<label for="radio2" aria-pressed="true" class="ui-button ui-widget ui-state-default ui-button-text-only" role="button" aria-disabled="false">
    <span class="ui-button-text">Outros</span>
</label>
<input type="radio" name="radio1" value="4" id="radio3" class="ui-helper-hidden-accessible">
<label for="radio3" aria-pressed="false" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right" role="button" aria-disabled="false">
    <span class="ui-button-text">Promocoes</span>
</label>

Когда я изменяю "нажатие арии" свойство на "true" , кнопка вообще не меняется ... Я пробовал таким образом, но это не сработало: var myhappyidtest = 2;</p> <p>$('.radiocheck input').each(function(i){ if(myhappyidtest == $(this).val()){ $(this).next('label').attr('aria-pressed', 'true'); } });

Я видел, что в случаях с кнопками это возможно обновить .Но у меня нет идеи, как это сделать в этом случае с лейблом.

У кого-то есть идея?

Ответы [ 2 ]

5 голосов
/ 14 апреля 2011

Я просто добавляю класс " ui-state-active " к элементу, и он работает!

var myhappyidtest = 2;

$('.radiocheck input').each(function(i){
    if(myhappyidtest == $(this).val()){
        $(this).next('label').attr('aria-pressed', 'true');
        $(this).next('label').addClass('ui-state-active');
    }else{
        $(this).next('label').attr('aria-pressed', 'false');
        $(this).next('label').removeClass('ui-state-active');
    }
});

UPDATE

В соответствии с предложением @Gnought и @Vladimir и с использованием подхода @Vladimir, вот обновленный ответ на этот вопрос:

var myhappyidtest = 2;

$('#format input[value="' + myhappyidtest + '"]').attr('checked', true).button('refresh');

Поскольку исходная ссылка примера отключена, я привел пример здесь: http://jsfiddle.net/psycocandy/8SpGd/1/

Спасибо за предложения.

2 голосов
/ 25 марта 2013

На самом деле, вы должны позволить jquery ui делать стили:

$(this).attr('checked', false);
$(this).button('refresh');
...