0

我试图在单击带有 class="checkbox" 的跨度时向表单添加一个隐藏的输入字段,并在单击带有复选标记的跨度时删除相同的字段。

我可以添加输入,但无法删除它

我的 HTML:

<span title="Here's My Title" class="wishlistcheck checkbox">1</span>

<form id="wishlistform"></form>

我的Javascript:

$(document).ready(function() {

    var appNum = 0;

    $("span.wishlistcheck").click(function() {
        var el = $(this);
        var appName = el.attr("title");

        var isChecked = el.hasClass('checkmark');
        if(!isChecked) {
            el.removeClass('checkbox');
            el.addClass('checkmark');

            appNum++

            $("#wishlistform").append("<input id=\"" + appName + "\" type=\"hidden\" name=\"product_" + appNum + "\" value=\"" + appName + "\">");


        } else {
            el.removeClass('checkmark');
            el.addClass('checkbox');

            appNum--

            $("input#" + appName).remove();




        }
    });
});
4

2 回答 2

2

我想你必须appNum--在 .remove() 方法调用之后放置。尝试一下:

$(document).ready(function() {
    var appNum = 0;
    $("span.wishlistcheck").click(function() {
        var el = $(this);
        var appName = el.attr("title");
        var isChecked = el.hasClass('checkmark');
        if(!isChecked) {
            el.removeClass('checkbox');
            el.addClass('checkmark');
            appNum++
            $("#wishlistform").append("<input class=\"" + appName + "\" type=\"hidden\" name=\"product_" + appNum + "\" value=\"" + appName + "\">");
        } else {
            el.removeClass('checkmark');
            el.addClass('checkbox');
            appNum--
            $("input[class=" + appName + "]").remove();
        }
    });
});
于 2012-05-07T23:07:48.903 回答
2

您可能通过该 id 标记有多个 DOM 元素,因此它可能正在删除与该 id 匹配但不是正确的元素。

尝试给它一个类名,并通过添加父元素来获得更具体的 jQuery 参数,即

 $('#wishlistform input#' + appName).remove();
于 2012-05-07T23:09:49.543 回答