私は決して理解できない問題にぶちかかります。最初に、どのチェックボックスが選択されているかを確認します。 (コンソールを実行して値が正しいことを確認します)。選択に基づいて、適切な初期選択のための新しいdivが表示されます。ネストされたチェックボックスをクリックすると、コンソールに価格 - 「初期選択」が表示されます。変更機能の外で正しい選択をする
スニペット内のコードは正確に動作しますが、実際のコードで何らかの理由で2番目のイベントハンドラ$('.check').on('change', function() {
内の正しいパッケージを認識しません。
たとえば、パッケージ1と2が最初の選択である場合、この場合はのような適切なdivが表示されますが、「何時ですか?」のチェックボックスが選択されると、console.log()
にのみ表示されますパッケージ1.
パッケージ2を単独で選択されている場合、それはif else
に取得していないので、console.log()
は表示されません...正しいのdivを示すが、そこに停止します。
正しく動作する唯一のオプションは、パッケージ1が単独で選択されている場合です。
私は自分の問題を解決するためにスニペットを得ることができたので、自分の変更機能の外で、製品の変更イベントが異なる機能やセクションで認識されるようにする別の方法があるかどうかです。これは必要ですか?私は第2の変更機能の中で、正しい製品選択がどのように認識されていないのか、他には考えられません。
これは私の実際のコードは、コンソールで生産されたものである...
は、私が実際に投稿するあまりコードを持っているが、それはまったく同じように構成されています。
私は変更機能の外で実際の選択を得るために何ができるのですか?
var package1 = $('#package1');
var package2 = $('#package2');
$('.product').on('change', function() {
if (package1.is(':checked') && package2.is(':checked')) {
console.log("Initial - Package 1 & 2");
$('#combined').show();
$('#pack1-details').hide();
$('#pack2-details').hide();
} else if (package2.not(':checked') && package1.is(':checked')) {
console.log("Initial - Package 1");
$('#combined').hide();
$('#pack2-details').hide();
$('#pack1-details').show();
} else if (package1.not(':checked') && package2.is(':checked')) {
console.log("Initial - Package 2");
$('#pack2-details').show();
}
});
$('.check').on('change', function() {
if (package1.is(':checked') && package2.is(':checked')) {
console.log("Price - Package 1 & 2");
} else {
if (package1.is(':checked')) {
console.log("Price - Package 1");
} else if (package2.is(':checked')) {
console.log("Price - Package 2");
}
}
});
#combined,
#pack1-details,
#pack2-details {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<label>Package 1</label>
<input type="checkbox" class="product" id="package1">
<label>Package 2</label>
<input type="checkbox" class="product" id="package2">
<div id="combined">
<p>Package 1 & 2</p>
<div class="check">
<label>What time is it?</label>
<input type="checkbox">
</div>
</div>
<div id="pack1-details">
<p>Package 1 only</p>
<div class="check">
<label>When does Spring start?</label>
<input type="checkbox">
</div>
</div>
<div id="pack2-details">
<p>Package 2 only</p>
<div class="check">
<label>Where is Greece?</label>
<input type="checkbox">
</div>
</div>
スニペットと実際のコードの間の差がなければなりません。実際のコードでは、package1とpackage2は実際にグローバルになっていますか?それらは範囲に入っていますか?あなたはいつでもvar package1 = $( '#package1');オン・チェンジ・ハンドラの内側にあることを確認してください。また、ページに複数の(一意でない)idsを持つことはありませんか? package1という名前の要素が増えていますか? – Martina
@Martinaここは私のjavascriptです。 'package1'と2はグローバルです。だからわからない。この質問の私の例の2番目の変更関数は、js http:// codepenの最後です。io/anon/pen/jBxNRO?editors = 0010 – Paul
package1とpackage2のidは、html内で一度だけです。 – Paul