我有一个有心愿单功能的网上商店。通过单击产品旁边的小按钮,它们将保存在会话中,并且可以在“愿望清单”页面上查看产品。
在愿望清单页面上,可以单击相同类型的按钮,从愿望清单中删除产品。但是,它不会删除特定产品,而是从列表/数组中删除前1/2产品。
以下是当前代码:
jQuery(document).ready(function() {
var x;
var y;
function setPosition() {
x = jQuery('.navbar-right li.wishlist img').offset().left;
y = jQuery('.navbar-right li.wishlist img').offset().top;
}
setPosition();
jQuery(window).resize(setPosition);
jQuery('img.add-to-wishist').click(function(event) {
event.preventDefault();
var wensenlijst = Cookies.get('wensenlijst');
if (wensenlijst === null || wensenlijst === "" || wensenlijst === undefined || wensenlijst === "null" ) {
var temp = [];
wensenlijst = temp;
}
else {
wensenlijst = JSON.parse(wensenlijst);
}
var id = jQuery(this).attr('attr-id');
if( !jQuery(this).hasClass('done') ) {
jQuery(this).addClass('done');
var mysrc = jQuery(this).attr('src');
var newsrc = mysrc.replace('likeitem.png', 'liked.png');
jQuery(this).attr( 'src', newsrc);
var clone = jQuery(this).clone().addClass('clonedHeart').insertAfter('img.add-to-wishist');
var eOffset = jQuery(this).offset().top; //get the offset top of the element
var eLeft = jQuery(this).offset().left;
var eTop = eOffset - jQuery(window).scrollTop(); //position of the ele w.r.t window
clone.css('z-index','10000')
.css('top', eTop)
.css('left', eLeft)
.css('position', 'fixed')
.animate({
left: x,
top: y,
}, 1500);
clone.queue(function() {
jQuery(this).remove();
var counter = jQuery('#wishlistcount');
var currentcount = wensenlijst.length;
counter.html( currentcount );
counter.addClass('itemAdded');
setTimeout(function(){
counter.removeClass('itemAdded');}, 2000);
jQuery(this).dequeue();
});
wensenlijst.push(id);
}
else {
jQuery(this).removeClass('done');
var currentcount = jQuery('#wishlistcount').html();
jQuery('#wishlistcount').html( parseInt(currentcount) - 1 );
var mysrc = jQuery(this).attr('src');
var newsrc = mysrc.replace('liked.png', 'likeitem.png');
jQuery(this).attr( 'src', newsrc);
var i = wensenlijst.indexOf(id);
if (wensenlijst.length === 1) {
wensenlijst = [];
}
else {
wensenlijst = wensenlijst.splice(i);
}
if( jQuery('body').hasClass('page-template-template-wensenlijst') ){
jQuery.when(Cookies.set('wensenlijst', wensenlijst, { expires: 7 })).done(function() {
location.reload();
});
}
}
Cookies.set('wensenlijst', wensenlijst, { expires: 7 });
});});
我发现我拼接阵列的方式是错误的,但我无法弄清楚如何正确地做到这一点。我看到的大多数信息都与数组中需要删除的特定事物有关,而不是在变量的设置中。
这是一个按钮片段:
<div class="save"><a href="#"><img src="image/src" attr-id="4737" class="like-item add-to-wishist" alt="add to wishlist"></a><p>Bewaren</p></div>
答案 0 :(得分:1)
您需要第二个参数到slice()函数调用并删除赋值。
而不是
wensenlijst = wensenlijst.splice(i);
只写
wensenlijst.splice(i, 1);