【发布时间】:2021-01-21 01:03:53
【问题描述】:
HTML
<select style="margin-left: 10px;" id="myDropDown">
<option value='' disabled selected>Assign Table</option>
<option value='1'>Table1</option>
<option value='2'>Table2</option>
<option value='3'>Table3</option>
</select>
<div id="myTable">
</div>
<input type="text" id="total" value="0" readonly="readonly" />
Javascript
$('#myDropDown').change(function() {
//Selected table
var inputValue = $(this).val();
var HTML;
var HTML2;
if (inputValue == 1) {
HTML = '<div><input id="test-element" type="checkbox" price="1">price 1</div><br><div><input id="test-element" type="checkbox" price="2">price 2 </div>';
}
else if(inputValue == 2) {
HTML = '<div><input id="test-element" type="checkbox" price="3">price 3 </div><br><div><input id="test-element" type="checkbox" price="4">price 4 </div>';
}
document.getElementById('myTable').innerHTML = HTML;
});
function calcAndShowTotal(){
var total = 0;
$('#myTable :checkbox[checked]').each(function(){
total += parseFloat($(this).attr('price')) || 0;
alert("working");
});
$('#total').val(total);
}
$(document).on("click",'#myTable :checkbox',function() {
//alert("working");
calcAndShowTotal();
});
calcAndShowTotal();
我做了一个下拉菜单,用 .innerHTML 在不同的复选框之间切换。我将点击功能更新为 $(document).on ,它适用于每次点击,但总值不会改变。为什么 calcAndShowTotal 函数不起作用?我也尝试将其更改为 $(document).on 但它不计算总数。例如检查小提琴链接。 http://jsfiddle.net/7yf8sdpw/95/
【问题讨论】:
-
你能添加一个代码sn-p吗?如果你不知道怎么做,去这里:stackoverflow.blog/2014/09/16/…
-
它不起作用,因为您在绑定事件后正在(重新)创建 HTML。
$("selector").click(...仅适用于运行时存在的元素。您需要更改为事件委托$(document).on("click", "#myTable :checkbox", function() ... -
@freedomn-m 感谢您的意见。我注意到它不适用于 $(document).on("click", "#myTable :checkbox" 而是通过在复选框中添加一个 id 并将其更改为: $(document).on("click ","#test-element"。但是现在总值函数不起作用了。
标签: javascript html jquery logic