일부 고급 jQuery 기능이있는 쇼핑 카트에서 작업하고 있습니다. 장바구니의 항목 옆에 나타나는 장바구니에서 항목 제거를 제외하고는 모든 것이 작동합니다. 당신이를 누르면 http://jsfiddle.net/richcoy/GpUWn/jQuery - 두 위치에서 카트 값을 0으로 설정합니다.
: 나는 내가 jsfiddle을했습니다 0
로 다시 변경해야하는 페이지의 왼쪽에있는 값을 대상으로하는 방법을 알아내는 힘든 시간을 보내고있어 버튼을 클릭하여 카트에 항목을 추가하면 장바구니에 항목이 표시됩니다. 항목 옆에는 X 단추가있어 카트에서 제거 할 수 있습니다. 해당 버튼을 클릭하면 카트의 값과 위로 버튼 옆의 값을 모두 0으로 설정해야합니다.
나는 JS 화재의 끝에 close.click 함수를 알고 있지만 왼쪽에있는 값을 0으로 만들기 위해 무엇이 들어가는지 알 수 없다.
HTML
<div id="body_container">
<div id="product_container">
<div class="product_box">
<div class="item_name">Item One</div>
<div class="product">0</div>
<button class="up category_one_up">Up</button>
<button class="down category_one_down">Down</button>
</div>
<div class="product_box">
<div class="item_name">Item Two</div>
<div class="product">0</div>
<button class="up category_one_up">Up</button>
<button class="down category_one_down">Down</button>
</div>
<div class="product_box">
<div class="item_name">Item Three</div>
<div class="product">0</div>
<button class="up category_one_up">Up</button>
<button class="down category_one_down">Down</button>
</div>
<div class="product_box">
<div class="item_name">Item Four</div>
<div class="product">0</div>
<button class="up category_two_up">Up</button>
<button class="down category_two_down">Down</button>
</div>
<div class="product_box">
<div class="item_name">Item Five</div>
<div class="product">0</div>
<button class="up category_three_up">Up</button>
<button class="down category_three_down">Down</button>
</div>
</div>
<div id="cart_container">
<h3>Shopping Cart</h3>
<div class="catone_header"><h3>Category One</h3></div>
<div class="cart_product">
<div class="item_name">Item One</div>
<input type="text" class="cart_product_number" value="0" />
<button class="close">X</button>
</div>
<div class="cart_product">
<div class="item_name">Item Two</div>
<input type="text" class="cart_product_number" value="0" />
<button class="close">X</button>
</div>
<div class="cart_product">
<div class="item_name">Item Three</div>
<input type="text" class="cart_product_number" value="0" />
<button class="close">X</button>
</div>
<div class="cattwo_header"><h3>Category Two</h3></div>
<div class="cart_product">
<div class="item_name">Item Four</div>
<input type="text" class="cart_product_number" value="0" />
<button class="close">X</button>
</div>
<div class="catthree_header"><h3>Category Three</h3></div>
<div class="cart_product">
<div class="item_name">Item Five</div>
<input type="text" class="cart_product_number" value="0" />
<button class="close">X</button>
</div>
</div>
</div><!-- end #body_container -->
JS
$(document).ready(function() {
var num;
var catone = 0;
var cattwo = 0;
var catthree = 0;
$('.up').click(function() {
num = parseInt($(this).siblings('.product').text());
console.log(num);
$(this).prevAll('.product').text(num + 1);
$('.cart_product').eq($(this).closest('.product_box').index()).fadeIn('slow').find('.cart_product_number').val(num + 1);
});
$('.down').click(function() {
num = parseInt($(this).siblings('.product').text());
if (num > 0) {
$(this).siblings('.product').text(num - 1);
};
if (parseInt($(this).siblings('.product').text()) === 0) {
$('.cart_product').eq($(this).closest('.product_box').index()).fadeOut('slow');
} else {
$('.cart_product').eq($(this).closest('.product_box').index()).show().find('.cart_product_number').val(num - 1);
}
});
// Category One
$('.category_one_up').click(function() {
catone++;
if (catone > 0) {
$('.catone_header').fadeIn('slow');
};
});
$('.category_one_down').click(function() {
if (catone > 0) {
catone--;
if (catone <= 0) {
$('.catone_header').fadeOut('slow');
};
};
});
// Category Two
$('.category_two_up').click(function() {
cattwo++;
if (cattwo > 0) {
$('.cattwo_header').fadeIn('slow');
};
});
$('.category_two_down').click(function() {
if (cattwo > 0) {
cattwo--;
if (cattwo <= 0) {
$('.cattwo_header').fadeOut('slow');
};
};
});
// Category Three
$('.category_three_up').click(function() {
catthree++;
if (catthree > 0) {
$('.catthree_header').fadeIn('slow');
};
});
$('.category_three_down').click(function() {
if (catthree > 0) {
catthree--;
if (catthree <= 0) {
$('.catthree_header').fadeOut('slow');
};
};
});
$('.close').click(function() {
$(this).parent('div.cart_product').fadeOut('slow');
$(this).prev('.cart_product_number').val(0);
});
});
:
여기는 수행 방법 여기 오른쪽 궤도에 있습니다. 아마도이 코드를 수정하여 작동하도록 할 수는 있지만, 내 관심사는 UI 뒤에 모델이 없다는 것입니다. 유지 보수를 더 어렵게 만들고 변화 시키거나 미래에 무언가를 추가하는 것은 어려울 것입니다. 내 제안은 쇼핑 카드의 상태를 유지 관리하고 나머지 UI에 제품 추가 또는 제거시 업데이트되도록 장바구니 개체를 만드는 것입니다. –
코드는 이해하기 쉽습니다. 이는 자바 스크립트에서 매우 중요합니다. 미래에 무언가를 추가해야 할 필요가 있다면, 리 팩토링은 그리 어렵지 않을 것입니다. –