2016-07-07 2 views
0

Я ищу, чтобы получить раскрывающийся список контрольных списков, и уже есть код, написанный кем-то для фреймворка bootftrap.код, работающий в JSfiddle, но не на локальном компьютере

Я нашел этот код http://codepen.io/bseth99/pen/fboKH

HTML

<br/> 
<div class="container"> 
    <div class="row"> 
    <div class="col-lg-12"> 
     <div class="button-group"> 
     <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-cog"></span> <span class="caret"></span></button> 
     <ul class="dropdown-menu"> 
      <li><a href="#" class="small" data-value="option1" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 1</a></li> 
     <li><a href="#" class="small" data-value="option2" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 2</a></li> 
     <li><a href="#" class="small" data-value="option3" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 3</a></li> 
     <li><a href="#" class="small" data-value="option4" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 4</a></li> 
     <li><a href="#" class="small" data-value="option5" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 5</a></li> 
     <li><a href="#" class="small" data-value="option6" tabIndex="-1"><input type="checkbox"/>&nbsp;Option 6</a></li> 
    </ul> 
</div> 

Javascript

var options = []; 

$('.dropdown-menu a').on('click', function(event) { 

    var $target = $(event.currentTarget), 
    val = $target.attr('data-value'), 
    $inp = $target.find('input'), 
    idx; 

    if ((idx = options.indexOf(val)) > -1) { 
    options.splice(idx, 1); 
    setTimeout(function() { $inp.prop('checked', false) }, 0); 
    } else { 
    options.push(val); 
    setTimeout(function() { $inp.prop('checked', true) }, 0); 
    } 

    $(event.target).blur(); 

    console.log(options); 
    return false; 
}); 

Когда я пытаюсь повторить то же самое в моей локальной машине я не могу записывать на бровь er. Я чувствую, что это небольшая проблема, но я не могу ее найти. Любая помощь приветствуется.

Вышеупомянутый код также работает в JSfiddle.net. Я не уверен, где я делаю ошибку.

+2

Добавить библиотеку jquery и bootstrap –

+0

Какие ошибки вы получаете в консоли своего браузера? –

+0

@AndrewLyndem Нет ошибок. На консоль ничего не записывается – Morpheus

ответ

1

просто привяжите событие после полной загрузки DOM.

$(document).ready(function(){ 

    var options = []; 

    $('.dropdown-menu a').on('click', function(event) { 

    var $target = $(event.currentTarget), 
    val = $target.attr('data-value'), 
    $inp = $target.find('input'), 
    idx; 

    if ((idx = options.indexOf(val)) > -1) { 
    options.splice(idx, 1); 
    setTimeout(function() { $inp.prop('checked', false) }, 0); 
    } else { 
    options.push(val); 
    setTimeout(function() { $inp.prop('checked', true) }, 0); 
    } 

    $(event.target).blur(); 

    console.log(options); 
    return false; 
    }); 
    }); 
2

Оберните свой JavaScript в $(document).ready(); Возможно, ваш JS стреляет быстро, в зависимости от того, где вы определили свои сценарии.

Смежные вопросы