我遇到了一個我完全無法弄清楚的問題。我最初檢查,看看哪些複選框被選中。 (運行控制檯以查看值是否正確)。然後基於選擇,將出現一個新的div以進行適當的初始選擇。一旦你點擊嵌套複選框,控制檯將顯示價格 - 「初始選擇」。獲得更改功能之外的正確選擇
我的代碼段中的代碼完全按照它應該的方式工作,但由於某些原因,在我的實際代碼中,它不會識別第二個事件處理程序$('.check').on('change', function() {
內的正確程序包。
例如,如果軟件包1和2是初始選擇,則會出現相應的div,例如在此例中爲#combined
,但是一旦複選框被選爲「現在幾點?」,console.log()
將僅顯示套餐1.
如果單獨選擇了套餐2,它將顯示正確的div,但在那裏停止... console.log()
不會顯示,因爲它不會顯示if else
。
即正常工作是,如果包1僅選擇了唯一的選擇。
所以,因爲我能得到的片段工作我的問題是,如果有另一種方式,以確保我的產品變更事件在整個不同的功能和部分...承認自己的變化的功能之外。這是否需要?我沒有其他想法,爲什麼在第二次更改功能,如何正確的產品選擇不被識別。
這是我的實際代碼在控制檯生產...
我有太多的代碼後實際的,但它的結構完全相同的方式。
什麼我能做得到改變功能之外的實際選擇任何想法?
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');在更改處理程序中確保。你也不會碰巧在頁面上有多個(非唯一)ID?更多元素名爲package1左右? – Martina
@Martina這是我的javascript。 'package1'和2是全局的。所以我不確定。我在這個問題中的第二個變化函數是在js http:// codepen的末尾。io/anon/pen/jBxNRO?editors = 0010 – Paul
package1和package2的id在html中只有一次。 – Paul