В принципе, у меня есть кнопка, которая добавляет новый элемент списка в неупорядоченный список. Внутри этого элемента списка находится раскрывающийся список (.formSelector), который при изменении триггеров вызывает ajax-вызов для получения значений для другого раскрывающегося списка (.fieldSelector) в том же элементе списка.jQuery - вопрос об обходе DOM
Проблема заключается в этой строке:
$(this).closest(".fieldSelector").append(
Если изменить его
$(".fieldSelector").append(
второй обновления коробки правильно. Проблема в том, что когда у меня есть несколько элементов списка, он обновляет каждый раскрывающийся список на странице с помощью поля классаSelector, что нежелательно. Как я могу пересечь DOM, чтобы просто выбрать fieldSelector в текущем элементе списка? Любая помощь приветствуется.
Полный код:
$("button", "#newReportElement").click(function() {
$("#reportElements").append("<li class=\"ui-state-default\"> <span class=\"test ui-icon ui-icon-arrowthick-2-n-s \"></span><span class=\"ui-icon ui-icon-trash deleteRange \"></span> <select name=\"form[]\" class=\"formSelector\"><? foreach ($forms->result() as $row) { echo "<option value='$row->formId'>$row->name</option>"; }?></select><select class=\"fieldSelector\" name=\"field[]\"></select></li>");
$(".deleteRange").button();
$('.formSelector').change(function() {
var id = $(this).val();
var url = "<? echo site_url("report/formfields");?>" + "/" + id;
var atext = "ids:";
$.getJSON(url,
function(data){
$.each(data.items, function(i,item){
$(this).closest(".fieldSelector").append(
$('<option></option>').val(item.formId).html(item.formLabel)
);
});
});
});
return false;
});
Perfect. Благодаря! – David
Рад, что это сработало для вас. Ура! – Anurag