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 に答える