У меня есть раскрывающееся окно начальной загрузки, которое я пытаюсь заполнить. Думаю, вы бы назвали заголовок значением, вроде того, что вы увидите в обычном выпадающем списке html. Поэтому пользователь знает, что они выбрали в меню.JQuery, проходящий вниз, а не вниз
Моя проблема в том, что если у вас более одной страницы на странице, 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()
, а также, но это просто не кажется правильным.
Любая помощь была бы замечательной!
Почему вы хотите, чтобы избежать '.parent()' цепь? –
Я действительно просто хочу избежать массивной строки .parent() – zazvorniki
, как правило, это делается с помощью '.closest()'. – Barmar