0

我有一些代码,一位绅士很友好地与我合作。他做得非常出色,让它按原样运行。但我注意到一个我无法解决的小问题。不幸的是,这方面的技能水平略高于我的能力。因此,我们将不胜感激任何帮助。

它的功能演示位于 >> http://jsfiddle.net/5fM9p/

问题是,当单击“删除”时,我需要它来重新启用最初在添加时禁用的选择。

4

3 回答 3

1

像下面这样替换您的删除功能将为您做到这一点。

$(".remove_from_cart").live("click", function(){
    var item=$(this);
    var itemId=item.parent().find(".product").attr("id");   
    item.parent().remove();
    var disabled=$(".added").find("#"+itemId).parent();   
    disabled.find("select").removeAttr("disabled");
    disabled.find("p").remove();
    disabled.append('<a class="add_to_cart" href="#add">Add To Cart</a>');   

});

但我发现您的 HTML 标记存在问题。您有多个具有相同 ID 的元素。这是不好的。ID 应该是唯一的。你可能应该解决这个问题。

另一件事是,一旦您重新启用链接添加到购物车(单击删除购物车时),它将无法工作,因为您之前绑定了它。所以你需要改变你的绑定代码来使用live这样的方法

$(".add_to_cart").live("click",function (e) { 
   //Your remaining code goes here
});

工作样本:http: //jsfiddle.net/5fM9p/23/

于 2012-05-17T00:31:34.283 回答
0

考虑这个小提琴:http: //jsfiddle.net/6V52G/

使用可用于识别哪些元素组属于哪个产品的属性,并删除整个 setupForm 函数,从一开始就将它们放在 HTML 中。

于 2012-05-17T15:23:51.563 回答
0

尝试这个:

$(".remove_from_cart").live("click", function(){
    var id = $(this).parent().find("select").attr("id");
    $(this).parent().remove();
    $("#" + id).parent().find("select").attr("disabled", "");
    $("#" + id).parent().find("p").remove();
    $("#" + id).parent().append('<a class="add_to_cart" href="#add">Add To Cart</a>'); 
});  

http://jsfiddle.net/5fM9p/25/

于 2012-05-17T00:18:45.557 回答