2015-05-07 3 views
2

У меня есть twitter-bootstrap select, что я пытаюсь выполнить итерацию с помощью jquery для создания списка маркеров google-maps (широта/долгота/идентификатор здания хранится со списком). на документ, готовый я хочу просматривать список и извлекать широту/долготу от каждого элемента Li и создать маркер с этого места:Выбор бутстрапа с помощью jquery не работает

 <select id="buildings" class="selectpicker" data-width="100%" data-live-search="true"><!-- style="border-radius:0px;" --> 
      {% for category in buildings %} 
       <optgroup label="{{ category.category.asBuildingCategory }}"> 
        {% for building in category.buildings %} 
         <option data-content="<span data-latitude='{{building.fLatitude}}' data-longitude='{{building.fLongitude}}' data-build-id='{{building.ixBuilding}}'>{{building.asBuildingName}}</span>"></option> 
        {% endfor %} 
       </optgroup> 
      {% endfor %} 
     </select> 

Это то, что сгенерированный код выглядит в браузере: enter image description here

Я могу успешно прикрепить onclick для каждого пункта меню, но я не могу переименовать список select через jquery.

До сих пор я попытался это:

$(document).ready(function() { 
    $(".dropdown-menu.inner.selectpicker li").each(function() { 
     alert($(this)); 
    }); 
}); 

но это, кажется, не что-нибудь ударить. Однако этот код работает для добавления щелчка слушателя:

$(document.body).on('click', '.dropdown-menu.inner.selectpicker li', function() { 
    debugger; 
    var latitude = $(this).find("span").data('latitude'); 
    var longitude = $(this).find("span").data('longitude'); 
    var buildingID = $(this).find("span").data('build-id'); 
}); 

EDIT Это то, что мой JQuery находит, используя этот код: enter image description here

var test = $(".dropdown-menu.inner.selectpicker li"); 

Он просто получает весь документ вместо списка элементы

+1

Вы не просто пропустили точки? «.dropdown-menu.inner.selectpicker li» вместо «dropdown-menu inner selectpicker li» – Tonsenson

+0

У меня были точки раньше и до сих пор не работали (забыл снова их добавлять, когда сбрасывал) – john

+0

Я просто попробовал точно такой же код, и он работает нормально. Любые ошибки на консоли (dev tools)? Ну, я думаю, вы проверили консоль уже ... – Tonsenson

ответ

0

Ваша разметка не складывается. Похоже, что-то мутирует разметку в браузере для вашего выбора, чтобы иметь классы .dropdown-menu.inner.selectpicker так разметки, прежде чем он попадет в браузер только показывает класс selectpicker:

<select id="buildings" class="selectpicker" ...> 

Используйте ID вместо этого, если у вас есть несколько selectpicker классов:

$(document).ready(function() { 
    $("#buildings li").each(function() { 
     alert($(this)); 
    }); 
}); 
+0

Это все благодаря 'twitter-bootstrap'. Вы создаете список, затем bootstrap берет его и создает пользовательский 'select' со всеми добавленными css-типами. Причина, по которой я не могу повторить исходный список, состоит в том, что 'twitter-boostrap' добавляет' display: none; ' – john

+0

Да, я подумал, что после того, как я перечитаю название, но я уже отправил этот ответ – charmeleon

+0

да, все же оцениваю ответ, хотя. Просто не могу окутать голову, почему это не работает. – john