Jquery遍历而不是向下

时间:2014-08-25 20:37:28

标签: jquery

我有一个我正在尝试填充的引导下拉列表,我猜你会调用带有值的标题,就像你在普通的html下拉列表中看到的那样。因此用户知道他们在菜单中选择了什么。

我的问题是,如果你在一个页面上有多个下拉列表,那么jquery会将它们作为目标,而不仅仅是我选择的那个。通常我会通过添加$(this).parent()来解决这个问题,但是html有点复杂,我真的不会做一个链 .parent().parent().parent()

必须有一种更好的方式来做到这一点,我错过了或者只是忘记了。

我的HTML看起来像

<p><label class="control-label" data-bind="html: label"></label></p>
<div class="dropdown" data-bind="cssProperties: properties, css: { hidden : EvalDisplay() == false }">
    <button class="btn btn-default dropdown-toggle col-md-12 dropBtn" type="button" id="dropdownMenu1" data-toggle="dropdown">
        <span class='pull-left'  data-bind="value: value,attr: { 'name' : id}"></span>
        <span class="caret pull-right"></span>
        <p class='clearfix'></p>
    </button>
    <ul class="dropdown-menu side-dropdown" role="menu">
        <!-- ko foreach: options -->
            <li role="presentation"><a role="menuitem" tabindex="-1" data-bind="html: Value"></a></li>
        <!-- /ko -->
    </ul>
    <p class='clearfix'></p>
</div>

我的jQuery看起来像这样

$(".dropdown-menu li a").click(function(){
    $(".dropBtn.btn:first-child").html('<span class="pull-left">'+$(this).text()+'</span><span class="caret pull-right"></span>');
    $(".dropBtn.btn:first-child").val($(this).text());
});

和一个玩jsfiddle http://jsfiddle.net/0p1Lhzq0/

我一直在玩parentsUtil(),但这似乎不对。

任何帮助都会很精彩!

1 个答案:

答案 0 :(得分:1)

使用此:

$(".dropdown-menu li a").click(function(){
    $(this).closest('.dropdown').find('.btn:first-child').html('<span class="pull-left">'+$(this).text()+'</span><span class="caret pull-right"></span>').val($(this).text());
});

Corrected fiddle