#jquery
#jquery
Вопрос:
div
У меня есть клонируемый
<div id="duplicater">
<label>Number:</label>
<input type="number" class="quantity" id="quantity"/>
<button id="removebutton" class='remove'>Delete</button>
</div>
При первой загрузке страницы на ней будет отображаться первый div.
Если вы нажмете кнопку «Добавить», он будет клонировать все целиком div
.
Но у него есть кнопка удаления, которая отображается для всех клонированных div
файлов. Я не хочу показывать эту кнопку удаления для первого основного div
.
Как это сделать?
jQuery(document).ready(function() {
var id = 0;
jQuery('#add').click(function() {
var button = jQuery('#duplicater').clone();
id ;
button.removeAttr('id');
button.insertBefore('.new_item_details');
button.attr('id', 'new_' id).attr('data-id', id);
button.find('.remove').attr('data-id', id);
});
jQuery(document).on('click', '.remove', function(e) {
var thisId = jQuery(this).data('id');
jQuery('div[data-id="' thisId '"]').remove();
e.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="add">add</button>
<div id="duplicater">
<label>Number:</label>
<input type="number" class="quantity" id="quantity" />
<button id="removebutton" class='remove'>Delete</button>
</div>
<div id="new_item_details" class="new_item_details">
</div>
Комментарии:
1. не клонируйте кнопку удаления, добавьте ее в свой jquery
2. Почему бы просто не использовать как правило CSS
#duplicater .remove { display: none; }
3. и еще один вариант (если вам не нравится css) — добавить
style='display:none;'
к вашей кнопке, затем установить значение display:block в вашем коде-клоне.
Ответ №1:
Перейдите по ссылке ниже, может быть, это поможет вам
HTML-код
<button id="add">add</button>
<div id="duplicater">
<label>Number:</label>
<input type="number" class="quantity" id="quantity" />
</div>
<div id="new_item_details" class="new_item_details">
</div>
КОД JAVASCRIPT
$(document).ready(function() {
var id = 0;
$('#add').click(function() {
var button = $('#duplicater').clone();
id ;
button.removeAttr('id');
button.insertBefore('.new_item_details');
button.attr('id', 'new_' id).attr('data-id', id);
button.append("<button id='removebutton' class='remove'>Delete</button>");
button.find('.remove').attr('data-id', id);
});
$(document).on('click', '.remove', function(e) {
var thisId = $(this).data('id');
$('div[data-id="' thisId '"]').remove();
e.preventDefault();
});
});
Ответ №2:
Мне было бы удобнее полагаться на javascript для этого, а не только на CSS. Это только мое мнение. Если вам действительно не нужно назначать IDs
для какого-либо другого использования, я бы не стал, поскольку в этом случае в них нет необходимости. Вы можете просто использовать $(this).parent().remove()
функцию в jQuery. Это приведет к удалению элемента без необходимости ориентироваться на какие-либо определенные ID
и т.д.
Ваш HTML-код будет выглядеть примерно так:
<div style="margin-bottom:15px">
<button id="add">add</button>
</div>
<div id="duplicater">
<label>Number:</label>
<input type="number" class="quantity" id="quantity"/>
</div>
<div id="new_item_details" class="new_item_details">
</div>
И ваш код javascript будет выглядеть примерно так:
$("#add").click(function() {
var c = $("#duplicater").clone();
c.append("<button id='removebutton' class='remove'>Delete</button>");
c.insertBefore("#new_item_details");
});
$(document).on("click", ".remove", function() {
$(this).parent().remove();
});
Очень чистый и сжатый код. Вот jsbin для вас, чтобы использовать:
Ответ №3:
попробуйте ниже css:
#duplicater:first-of-type .remove{display:none}
этот css не отображает кнопку удаления первого дублирующего элемента div.
Я надеюсь, что это будет полезно для вас.
Ответ №4:
Используйте приведенный ниже код
jQuery(document).ready(function() {
var id = 0;
jQuery('#add').click(function() {
var button = jQuery('#duplicater').clone();
id ;
button.removeAttr('id');
button.insertBefore('.new_item_details').append('<button id="removebutton" class="remove">Delete</button>');
button.attr('id', 'new_' id).attr('data-id', id);
button.find('.remove').attr('data-id', id);
});
jQuery(document).on('click', '.remove', function(e) {
var thisId = jQuery(this).data('id');
jQuery('div[data-id="' thisId '"]').remove();
e.preventDefault();
});
});
<button id="add">add</button>
<div id="duplicater">
<label>Number:</label>
<input type="number" class="quantity" id="quantity"/>
</div>
<div id="new_item_details" class ="new_item_details">
</div>
Ответ №5:
Вы можете скрыть это с помощью CSS.
#duplicater #removebutton {
display: none;
}