Переключатель Bootstrap 3

Я играю с twitter bootstrap 3 и его новыми переключателями и не могу понять, какая кнопка отмечена.

Мои кнопки такие:

    <div class="form-group">
      <label for="inputLogType" class="col-lg-2 control-label">Log type</label>
      <div class="col-lg-10">
        <div class="btn-group" data-toggle="buttons">
          <label class="btn btn-primary">
            <input type="radio" name="inputLogType" id="splunk">Splunk
          </label>
          <label class="btn btn-primary">
            <input type="radio" name="inputLogType" id="pig">PIG
          </label>
        </div>          
      </div>            
    </div>

Я могу узнать, нажата ли какая-либо кнопка через $(".btn-group").click(), но внутри я не могу понять, какая кнопка нажата. Я получу 2 кнопки через jquery $("input[name='inputLogType']"), и одна из них будет иметь свойство checked:true. Однако, когда я делаю $("input[name='inputLogType']:checked"), ничего не появляется.

Кто-нибудь знает, что случилось?


person Penguinator    schedule 01.08.2013    source источник
comment
так получилось, что если я сделаю $("input[name='inputLogType']")[i].checked, это сработает, но кто-нибудь знает, почему я не могу выбрать, как я показал выше изначально?   -  person Penguinator    schedule 01.08.2013
comment
Вы пытаетесь получить доступ к значению :checked в обратном вызове щелчка? Если это так, вероятно, свойство еще не было применено. Вы можете использовать $(event.target).find('input');   -  person BenjaminCorey    schedule 02.08.2013
comment
У меня сработал этот селектор: jsfiddle.net/QMsQU/1 (используя chrome). Какой javascript вы использовали, чтобы показать, что находится внутри объекта jQuery $(input[name='inputLogType']:checked)?   -  person Joe_G    schedule 02.08.2013
comment
@Joe_G Я просто использовал console.log. Странно, что это работает в jsfiddle, но не в моем приложении. Как вы думаете, это может иметь какое-то отношение к начальной загрузке 3?   -  person Penguinator    schedule 02.08.2013
comment
Хм, оказалось, что в моем скрипте показывался только тот, на который щелкнули последним, поэтому, если я нажимаю свинью в первый раз, он ничего не выбирает, а когда я нажимаю splunk, он показывает, что свинья выбрана, и так далее. Любая идея, почему: S?   -  person Penguinator    schedule 02.08.2013
comment
на самом деле @BenjaminCorey ваше решение сработало отлично, спасибо!   -  person Penguinator    schedule 02.08.2013
comment
извините за спам, но @BenjaminCorey не могли бы вы опубликовать это как ответ? спасибо!   -  person Penguinator    schedule 02.08.2013
comment
Что вы, ребята, не замечаете, так это то, что Bootstrap не использует проверенное по умолчанию свойство для переключателя, он добавляет активный класс к метке, содержащей переключатель, когда он нажат.   -  person bafromca    schedule 18.12.2013


Ответы (1)


Вы пытаетесь получить доступ к значению :checked в обратном вызове щелчка? Если это так, вероятно, свойство еще не было применено.

Вы можете использовать $(event.target).find('input'); для выбора целевого переключателя.

person BenjaminCorey    schedule 01.08.2013
comment
Мне пришлось использовать $(event.target).find('input')[0]; чтобы получить элемент DOM (а не элемент jQuery). - person Boggin; 10.03.2014