当我点击现有复选框中的选项时,我使用jquery添加新复选框。
接下来,我在此复选框中添加一个ID,然后通过新的jquery获取它的值。我想创建一个新的jquery来获取所有扩展的已检查ID的ID。
我目前的HTML代码是:
<div id="div_id_diag-diagnosis_option" class="form-group">
<label for="id_diag-diagnosis_option_0" class="control-label col-md-3 requiredField">Option<span class="asteriskField">*</span> </label>
<div class="controls col-md-8">
<label class="checkbox">
<input type="checkbox" name="diag-diagnosis_option" id="id_diag-diagnosis_option_1" value="b">b</label>
<label class="checkbox">
<input type="checkbox" name="diag-diagnosis_option" id="id_diag-diagnosis_option_2" value="a">a</label>
<label class="checkbox">
<input type="checkbox" name="diag-diagnosis_option" id="id_diag-diagnosis_option_3" value="c">c</label>
</div>
</div>
添加复选框的jquery是:
$("input[name='diag-diagnosis_option']").change(function() {
var $this = $(this);
if ($this.prop('checked')) {
var option = $(this).val();
alert(option);
$(this).parent().append("<a href='#'>here</a>");
} else if ($this.siblings('a').length) {
$this.siblings('a').remove();
}
});
获取新复选框值的jquery如下所示:
$(document).on('change', '#extended', function () {
var option = $(this).val();
//alert(option);
});
获取所有扩展选中复选框的ID的jquery是下面的那个,但它不起作用。
var selected = [];
$(document).on('each', '#extended input:checked', function () {
selected.push($(this).attr('id'));
alert(selected);
});
您可以对其进行测试here。
你能帮我吗?
答案 0 :(得分:3)
您有不正确的语法来迭代复选框。您正尝试将query="select * from t_monkeys where is_deleted=0"
deltaQuery="select monkey_id from t_monkeys where last_changed_dt > '${dataimporter.last_index_time}'"
deltaImportQuery="select * from t_monkeys where concat('monkey-',monkey_id) = '${dataimporter.delta.monkey_id}'
用作活动。但是每个都是jquery方法,甚至没有与元素相关联。并使用它的正确语法是:
each
但是,您可以使用var selected = [];
$('#extended input:checked').each(function () {
selected.push($(this).attr('name'));
alert(selected);
});
和.map()
以更干净的方式实现此目的:
.get()
答案 1 :(得分:0)
修改强>
当您动态附加复选框时,您应该在更改事件处添加值..也有动态复选框具有相同的ID ..您应该使用类而不是不允许的ID
将其作为 -
var selected = [];
$("input[name='diag-diagnosis_option']").change(function () {
var $this = $(this)
if ($(this).prop('checked')) {
var option = $(this).val();
$(this).parent().append('<label><input type="checkbox" class="extended"
name="extended" value=' + escape($(this).attr('value')) + '>
Extended</label>');
} else if ($this.siblings('label').length) {
$this.siblings('label').remove();
}
});
$(document).on('change', '.extended', function () {
var option = $(this).val(); // or attr('name');
selected.push(option);
alert(selected);
});