Я хотел бы задать вопрос, как управлять аккордеоном динамически.
при нажатии кнопки "Добавить" я должен добавить еще один дополнительный аккорд аккорда и нажать кнопку "Удалить", чтобы удалить последнюю строку аккордеона.
то у меня есть вопрос, как контролировать это.
Мой исходный код, как показано ниже.
JS:
$("#addResolution").click(function (e) {
alert("Add new resolution. ");
});
$("#removeResolution").click(function (e) {
alert("Remove new resolution. ");
});
<h3><a href="#" class="editor-label">
@Html.LabelFor(model => model.Resolution)
</a></h3>
<div>
<button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all" id="addResolution">
<span class="ui-button-text">ADD</span>
</button>
<button class="ui-button ui-button-text-only ui-widget ui-state-default ui-corner-all" id="removeResolution">
<span class="ui-button-text">DEL</span>
</button>
<div id="accordionSub">
<h3><a href="#" class="editor-label">
@Html.LabelFor(model => model.Resolution)
</a></h3>
<div class="editor-field">
@Html.EditorFor(model => model.Resolution,
new
{
style = "width:" + 100 + "%; height:" + 5 + "em;"
})
@Html.ValidationMessageFor(model => model.Resolution)
<br />
<label id="lblFileUploadResolution">Choose Image File</label>
<input type="file" name="uploadFile" id="fileToUploadResolution" style="width:89%;" accept="image/png, image/gif, image/jpeg, image/bmp" />
<input type="button" id="btnFileUploadResolution" value="Upload" style="width:10%;" />
</div>
</div>
</div>
Когда я нажимаю кнопку "Добавить", динамически добавляю еще один столбец и увеличиваю поддерево аккордеона (пример: accordian1, accordian2, accordian3)
и нажмите кнопку "Удалить", а затем удалите последнюю строку.
Пожалуйста, помогите мне поблагодарить вас!
Если я правильно вас понимаю, из вашего комментария к предыдущему ответу, что у вас возникли проблемы с кодом, созданным бритвой, например:
@Html.LabelFor(model => model.Resolution)
Очевидно, что, поскольку этот код является серверной, вам нужно решение на стороне клиента.
Один из вариантов - использовать клон jquery для клонирования элемента, дать клону уникальный идентификатор, а затем добавить его... см. Здесь пример
поэтому вы бы сделали что-то вроде:
var clone = $('#accordionSub').clone();
clone.attr('id', 'id1').insertAfter($('#accordionSub'));
Это совершенно непроверено, но, надеюсь, укажет вам в правильном направлении. Я жестко закодировал новый идентификатор как "id1", но, очевидно, вам нужно будет определить, каким должен быть идентификатор нового элемента.
Я думаю, вы хотите этого
$('#addAccordion').click( function() {
var newDiv = "<div><h3>Q2 New Question</h3><div>New Content</div></div>";
$('#accordionSub').append(newDiv)
$('#accordionSub').accordion("refresh");
});