1. ホーム
  2. javascript

[解決済み] Jqueryボタンのclick()関数が動作しない【重複】について

2022-02-19 21:27:58

質問

私は、ユーザーが自分の要件に基づいて動的なテキストフィールドを追加できる動的なフォームを作成しようとしています。以下は私のJqueryコードです。

$(document).ready(function() {
    $("#add").click(function() {
        var intId = $("#buildyourform div").length +1;
        var fieldWrapper = $("<div class=\"fieldwrapper\" name=\"field" + intId + "\" id=\"field" + intId + "\"/>");
        var fName = $("<input type=\"text\" name=\"name\" class=\"fieldname\" id=\"tb"+ intId +"_1\"/>");
        var lname = $("<input type=\"text\" name=\"email\" class=\"lastname\" id=\"tb"+ intId +"_2\"/>");
        var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />");

        var addButton = $("<input type=\"button\" class=\"add\" id=\"add\" value=\"+\" />")
        removeButton.click(function() {
            $(this).parent().remove();
        });
        fieldWrapper.append(fName);
        fieldWrapper.append(lname);
        fieldWrapper.append(removeButton);
        fieldWrapper.append(addButton);
        $(this).remove();
        $("#buildyourform").append(fieldWrapper);

    });

});

で、HTMLコードは...

<fieldset id="buildyourform">
    <legend>Build your own form!</legend>
    <div class="fieldwrapper" name="field1" id="field1" />
       <input type="text" name="name" class="fieldname" id="tb1_1" />
       <input type="text" name="email" class="lastname" id="tb1_2" />
       <input type="button" value="+" class="add" id="add" />
    </div>
</fieldset> 
<input type="submit" value="send" id="asdasd" name="submit" />

チェック・マイ JSFiddle もあります。

Whats wrong with me is when user click on "+" button first time then click function working and it adds two text-fields into my fieldset. しかし、その後、私が"+"ボタンをクリックすると、クリック関数がトリガーされません。IDの衝突かもしれません。助けてください。

どうすればいいですか?

のイベントデレゲーション構文を使用する必要があります。 .on() をご覧ください。変更してください。

$("#add").click(function() {

になります。

$("#buildyourform").on('click', '#add', function () {

jsFiddleの例