У меня есть набор полей ввода чисел, помеченных как small & medium.., так и набор div с меткой small и medium. В моем проекте на самом деле будет больше размеров, чем просто маленький и средний. Когда вы добавляете число в поле ввода небольшого числа, вводится текстовый ввод. После того, как div помечен как маленький. Когда вы вычитаете число из поля ввода небольшого числа, поле ввода текста, которое было недавно добавлено, удаляется.
Если небольшое числовое поле равно 0, я хочу
<div class="name-number-field-container" data-size="Small">
быть скрытым, если небольшое числовое поле больше 0, я хочу, чтобы
<div class="name-number-field-container" data-size="Small">
показывать. То же самое относится к среде.
скрытые и показанные правильно, но они не связаны с их надлежащим размером и продуктом. all class= "name-number-field-container" показать
я попробовал это:
$('.product-quantity').on('change', function(){
var select = $(".name-number-field-container").closest('[id^="product"]').find('[data-size="' + this.name + '"]')
if($(this).val()>=1){
$(select).show();
} else {
$(select).hide();
}
});
Это то, что вы имели в виду?
Замените код show/hide следующим:
$('.product-quantity').on('change', function () {
var select = ".name-number-field-container[data-size=" + $(this).attr('name') + ']'
if ($(this).val() >= 1) {
$(this).parents('div[id^=product-]').find(select).show();
} else {
$(this).parents('div[id^=product-]').find(select).hide();
}
});
http://jsfiddle.net/fenderistic/Q4bFB/
В принципе, у вас есть настраиваемое name
для каждого product-quantity
которое коррелирует с конкретным data-size
name-number-field-container
. Я должен был добавить атрибут data-output-id
чтобы различать разные div. Таким образом, вы используете эту информацию, чтобы скрыть или показать коррелирующие div
.
$('.product-quantity').on('change', function () {
if ($(this).val() >= 1) {
$(".name-number-field-container[data-size='" + $(this).attr("name") + "'][data-output-id='" + $(this).attr("data-product-id") + "']").show();
} else {
$(".name-number-field-container[data-size='" + $(this).attr("name") + "'][data-output-id='" + $(this).attr("data-product-id") + "']").hide();
}
});
Я просто добавил класс для вашей скрипки, который явно задал ширину для входного класса.name-поля следующим образом:.name-field {width: 50px;} и получил результаты, которые вы искали.