收听以前选择的输入的更改

时间:2017-03-07 16:39:11

标签: javascript jquery

我有一些输入(复选框),我有以下代码:

$(document).on('change', '.my-input', function () {
    //I'm doing something here.
});

但是代码上方几行已经选中了这些复选框:

var myInputs = $('.my-inputs');

我是否可以将myInputs引用到侦听器并使用变量?

PS:这些复选框最初不在DOM中。

2 个答案:

答案 0 :(得分:1)

无论是否处于初始DOM状态,都以相同的方式使用侦听器。也许首先考虑清除听众。下面的示例侦听change初始输入集,取消绑定它们,添加新输入并重新侦听。另外,我已经保持一个input不显示初始监听器状态。

这有助于回答您的问题吗?我不确定你是否在获取新元素的价值方面遇到问题,或者仅仅是听众。无论哪种方式,您都可以使用新的侦听器来获取checked状态等。

// Old listener state
$('.inputs, .old-inputs').on('change', function() {
  console.log('Input has changed (initial DOM)')
});

// Add a new element to the DOM
$('.inputs-container').append('<input type="checkbox" class="inputs">')

// Unbind
$('.inputs').unbind('change');

// New listener
$('.inputs').on('change', function() {
  console.log('Input has changed (post-DOM update)')
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='inputs-container'>
    <input type='checkbox' class='old-inputs'>
    <input type='checkbox' class='inputs'>
    <input type='checkbox' class='inputs'>
</div>

答案 1 :(得分:0)

您可以将所选复选框的值设为:

var selectedValues = [];
$(document).on('change', '.my-input', function () {
    $. each($(".my-input:checked"), function(){
      selectedValues.push($(this).val());
    });
});