Это мой весь сценарий, я знаю, что это долго, но только одна линия имеет важное значение и добавить все это страхование:Вставить после последнего элемента с помощью JQuery
//Add new Addable div
$('.AddNewE').click(function() {
var RemoveAddableButton = $('<input type="button" class="RemoveE button red" value="remove" />');
$(RemoveAddableButton).click(function() {
$(this).closest('.Addable').remove();
});
var TargetId = $(this).attr('id');
TargetId = TargetId.substring(3);
var Target = $('.Addable#' + TargetId + ':first');
var Count = $('.Addable#' + TargetId).size();
var CloneTarget = $(Target).clone();
CloneTarget.find('input').val('');
CloneTarget.insertAfter('.Addable#' + TargetId + ':last'); // ***importantOne
var TargetName = $(Target).find('input').attr('name');
if (Count == 1) {
var CloneName = TargetName + '[1]';
TargetName = TargetName + '[0]';
$(Target).find('input').attr('name', TargetName);
$(Target).find('span[class*="field-validation"]').attr('data-valmsg-for', TargetName);
$(CloneTarget).find('input').attr('name', CloneName);
$(CloneTarget).append($(RemoveAddableButton));
if ($(CloneTarget).find('span[class*="field-validation"]').size() > 0) {
$(CloneTarget).find('span[class*="field-validation"]').remove();
$(CloneTarget).append(
$('<span class="field-validation-valid invalid-side-note" data-valmsg-replace="true" data-valmsg-for="' + CloneName + '"></span>')
);
}
} else {
var indx = TargetName.length - 3;
var CloneTargetName = TargetName.substring(0, indx);
CloneTargetName = CloneTargetName + '[' + Count + ']';
$(CloneTarget).find('input').attr('name', CloneTargetName);
$(CloneTarget).append($(RemoveAddableButton));
if ($(CloneTarget).find('span[class*="field-validation"]').size() > 0) {
$(CloneTarget).find('span[class*="field-validation"]').remove();
$(CloneTarget).append(
$('<span class="field-validation-valid invalid-side-note" data-valmsg-replace="true" data-valmsg-for="' + CloneTargetName + '"></span>')
);
}
}
(function ($) {
$.fn.updateValidation = function() {
var form = this.closest("form").removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
return this;
};
})(jQuery);
$(Target).updateValidation();
$(CloneTarget).updateValidation();
});
Если я нажимаю кнопку .AddNewE
затем новый div
добавил, но, как мой сценарий, я хочу, чтобы добавить новый div
к концу divs
поэтому я использую
CloneTarget.insertAfter('.Addable#' + TargetId + ':last');
но всегда новый div
добавил в качестве второго div
это означает, что всегда т он :first
и :last
ДИВ это же и является первым одна и я проверил по:
$('.Addable#' + TargetId).css('border', '');
$('.Addable#' + TargetId + ':last').css('border', '3px dotted green');
$('.Addable#' + TargetId + ':first').css('border', '3px dotted red');
Итак, где проблема? почему jQuery не может узнать последние div
?
Если вы используете ID, JQuery берет только первый, даже если у вас есть элемент с тем же идентификатором. – Hadas
@Hadas Но у меня нет другого выбора, через какое-то время у меня есть две разные кнопки добавления с двумя разными 'div' или более, так как я могу справиться с ней без Id? – Saeid
несколько идентификаторов недействительны, поэтому вам нужно будет использовать класс, если вы хотите больше одного. – primavera133