【问题标题】:Selecting bootstrap drop down with jquery not working使用 jquery 选择引导下拉菜单不起作用
【发布时间】:2015-05-07 19:42:53
【问题描述】:

我有一个twitter-bootstrap select,我正在尝试使用 jquery 进行迭代以构建一个google-maps 标记列表(纬度/经度/建筑物 ID 与列表一起存储)。在准备好文档时,我想迭代列表并从每个 li 项目中提取纬度/经度,并使用该位置创建一个标记:

        <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>

这是生成的代码在浏览器中的样子:

我可以成功地为每个菜单项附加一个 onclick,但我似乎无法通过 jquery 迭代 select 列表。

到目前为止,我已经尝试过这个:

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

编辑 这是我的 jquery 使用此代码发现的:

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

它只是获取整个文档而不是列表元素

【问题讨论】:

  • 你不只是缺少点吗? “.dropdown-menu.inner.selectpicker li”而不是“dropdown-menu inner selectpicker li”
  • 我以前有点,但仍然无法正常工作(在闲逛时忘记重新添加它们)
  • 我刚刚尝试了完全相同的代码,它工作正常。控制台(开发工具)上的任何错误?好吧,我猜你已经检查过控制台了......
  • @john 这里也一样。我也刚刚对其进行了测试,它工作正常:)。
  • 那我明天回来试试重启VS

标签: javascript jquery html twitter-bootstrap


【解决方案1】:

您的标记没有加起来。看起来有些东西会改变您在浏览器上的标记,以便您选择具有 .dropdown-menu.inner.selectpicker 类,因为您的标记在访问浏览器之前只显示类 selectpicker

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

如果您有多个 selectpicker 类,请改用 ID:

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

【讨论】:

  • 感谢twitter-bootstrap。您构建一个列表,然后引导程序获取它并构建一个自定义的select,并添加了所有类型的 css。我无法迭代原始列表的原因是因为twitter-boostrap 添加了display: none;
  • 是的,我在重新阅读标题后发现,但我已经发布了这个答案
  • 是的,不过仍然很感激这个答案。只是无法理解为什么这不起作用。
  • 如果在您的引导 js 之前包含此 javascript,这仍然不起作用
  • 不会$(document).ready 阻止这种情况,或者有办法确保在bootstrap js 之后包含我的js
猜你喜欢
  • 2017-11-22
  • 2016-04-12
  • 2013-04-07
相关资源
最近更新 更多