Jquery 拆下一个';变量';数组中的元素

Jquery 拆下一个';变量';数组中的元素,jquery,arrays,Jquery,Arrays,我有一个具有愿望列表功能的网店。通过单击产品旁边的一个小按钮,它们将保存在会话中,并且可以在愿望列表页面上查看产品 在愿望列表页面上,可以单击相同类型的按钮,从愿望列表中删除产品。但是,它不会删除特定产品,而是从列表/阵列中删除前1/2个产品 以下是当前代码: jQuery(document).ready(function() { var x; var y; function setPosition() { x = jQuery('.navbar-right li.wishlist i

我有一个具有愿望列表功能的网店。通过单击产品旁边的一个小按钮,它们将保存在会话中,并且可以在愿望列表页面上查看产品

在愿望列表页面上,可以单击相同类型的按钮,从愿望列表中删除产品。但是,它不会删除特定产品,而是从列表/阵列中删除前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>
贝瓦伦


需要第二个参数来调用slice()函数并删除赋值

而不是

wensenlijst = wensenlijst.splice(i);    
只写

 wensenlijst.splice(i, 1);

你能不能说一下按钮代码?好的。把它添加到问题中!谢谢你的建议。如果我这样做,新阵列将成为我试图删除的产品,再加上它旁边的一个产品。再次感谢您的快速回答。这次它只返回我试图删除的产品,其他什么都没有!是的,你需要删除任务。slice()返回要删除的元素。你只需要原始阵列中剩下的东西。太棒了!!谢谢。看来这已经解决了!