Вот мой HTML
<div id="ingredientrow1">
<div id="add"><a href="#" id="addIngredient1">Add</a></div>
<div id="remove"><a href="#" id="removeIngredient1">Remove</a></div>
<div id="si">
<input type="text" id="singleIngredient1" name="single_ingredient" />
<input type="hidden" id="recipe_ingredient_id1" name="recipe[new_ri_attributes][][ingredient_id]" />
</div>
<div id="iq"><input type="text" id="recipe_ingredient_quantity" name="recipe[new_ri_attributes][][quantity]" class="txt_qty" /></div>
<div id="iss"><select id="recipe_ingredient_serving_size_id1" name="recipe[new_ri_attributes][][serving_size_id]" ></select></div>
</div>
Я клонирую div "ингридиенты1" и увеличиваю все идентификаторы на единицу, так что теперь в моем HTML есть два двух элемента div с идентификаторами: "ингридиенты" и "ингредиенты". Пользователь может клонировать этот div любое количество раз, нажав на ссылку с идентификатором «addIngredient1».
Примечание. Идентификатор рассматриваемого элемента управления select "recipe_ingredient_serving_size_id1" также изменяется с ... id2.
Я также использую плагин автозаполнения для элемента управления "singleIngredient1", который будет устанавливать идентификатор ингредиента, выбранного в скрытом вводе, а также заполнять размеры порций в поле выбора.
Проблема : Так как пользователь может сгенерировать n чисел ингридиентов, я не знаю, какое поле выбора заполнить при выборе ингредиента.
Известные факты : Я знаю, над каким ингредиентом работает пользователь. Я так понимаю
var recipeingredientid = $ (this) .next (). Attr ("id");
, который дает мне "ингридиент", где n равно 1, 2, ....
Мой вопрос : Как мне попасть в поле выбора recipe_ingredient_serving_size_idn в определенной строке ингредиентов? Поскольку выбранный идентификатор будет изменен.
Пример к моему вопросу : Если мой recipeingredientid - "componentrow2", то идентификатор элемента управления select заканчивается 2. Как я могу получить ссылку на этот элемент управления select?
Это мой JQuery, который запускается, когда пользователь выбирает ингредиент из автозаполнения ввода
$("input[id*='singleIngredient']").result(function(event, data, formatted) {
if (data) {
var recipeingredientid = $(this).next().attr("id");
$("#" + recipeingredientid).val(data[1]);
$.getJSON("/serving_sizes?ingredientid=1", function(j) {
var options = "<option value=''>Please select a serving size</option>";
for (var i=0; i < j.length; i++)
options += '<option value="' + j[i].serving_size.id + '">' + j[i].serving_size.name + '</option>';
//I am trying not to hard code this id here.
$("#recipe_ingredient_serving_size_id1").html(options);
});
}
});
Я знаю, что всегда пропускаю 1 в качестве ингредиента, но это всего лишь тест ...
Спасибо за ваше время.