dinamically入力フォームを作成するためにjQueryを使用しています。私は自分のコードの例を作りました(この例は入力フォームを作成しませんが、私のスクリプトとしてはうまく機能し、同じエラーを再現します)。異なるdivで別々にjQueryを使用して動的要素を作成する
問題は、最初のdivの「イベント」の「追加」を押すと、jQueryが1から始まる数字の頭蓋骨を生成するということです。
2番目のdivの「イベント」の「追加」を押した後、数字は1からではなく、最初のdivの "event"の最後の数字から始まります。
"イベント"クラスを変更することはできません。この例では2つのdivがありますが、それらは3-5またはそれ以上で、すべてがクラス「イベント」です。
"イベント"を1から開始するにはどうすればよいですか?
var i = 1;
$('.plus').click(function(e) {
var $numberDiv = $('<span>' + i + '</span>').addClass('numberDiv');
var $clear = $('<div />').addClass('clear');
var $event = $(e.currentTarget).closest('.event');
$event.find('.participantContainer').append($numberDiv);
i++;
})
$('.minus').click(function(e) {
var $numberDiv = $('<span>'> + i + '</span>').addClass('numberDiv');
var $clear = $('<div />').addClass('clear');
var $event = $(e.currentTarget).closest('.event');
$event.find('.numberDiv:last').remove();
i--;
})
$('.reset').click(function() {
\t i = 1;
$('.numberDiv').each(function() {
\t $(this).remove();
})
})
body {
font-family: sans-serif;
}
button {
background: none;
}
.clear {
clear: both;
}
.plus,
.minus,
.reset {
height: 33px;
font-size: 20px;
cursor: pointer;
margin-right: 2px;
float: left;
margin-bottom: 10px;
border-radius: 10px;
padding: 0 0 0 0;
}
.plus {
border: 2px solid green;
width: 56px;
}
.plus:hover {
background-color: green;
}
.minus:hover {
background-color:red;
}
.minus {
border: 2px solid red;
width: 95px;
}
.reset {
border: 2px solid blue;
width: 95px;
}
.reset:hover {
background-color: lightblue;
}
.numberDiv {
font-size: 20px;
position: relative;
top: -5px;
margin-right: 10px;
}
.numberDiv:before {
content:'☠';
font-size: 30px;
}
.participantContainer {
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="event">
<button class="plus">Add</button>
<button class="minus">Remove</button>
<div class="participantContainer"></div>
</div>
<div class="clear"></div>
<div class="event">
<button class="plus">Add</button>
<button class="minus">Remove</button>
<div class="participantContainer"></div>
</div>
<div class="clear"></div>
<button class="reset">Reset</button>
主な理由は、私が学んでいると私はjQueryを使って多くの経験を持っていないことはもちろんです。
ありがとうございました!
jQueryの動的なUIを作成するための、本当にお粗末な選択であるように、私は配列でもプラスにそれをターゲットに、あなたの変数を変更し、マイナスすることができます。あなたはReactやElmを代わりに学習することをお勧めします。 – xs0
ユーザーxs0から言われているように[reactjs](https://reactjs.org/)良い選択です! – Doggo
答えをありがとう!私はjQueryの代わりにいくつかの優れたソリューションがあることを理解しています...しかし、もしそれをとにかく使用しなければならないのですか? –