1

我在javascript中动态创建了几个元素。除其他外,这些是范围输入。我想在“输入更改”事件中显示该值。这些输入中的每一个都有像“概率”+数字这样的 id。该数字是一个全局变量,并在按钮的单击事件时递增。

当我动态创建这些输入时,输入更改事件不再起作用。stackoverflow 上有一个问题,其中解决方案是实时事件,而不是事件,并且它部分有效。代码是:

 $(document).on('change','#probabilitate'+nrBoli, function(){

      //something
  })
问题是,如果事件是在“#probabilitate1”(例如)事件上触发的,则变量 nrBoli 在函数内部可以正常工作,但是如果我想将它与 id 的名称作为参数连接起来(我的情况是触发每个元素),nrBoli 不可用。

4

1 回答 1

0

您需要使用 'class' 而不是 'id' 来获取所有元素。使用 'id' 你只能得到 DOM 中的第一个元素:

附加元素:

var globalProp = 1;

$("#sameContainer").append('<input type="checkbox" id="inputId" class="probabilitate' + globalProp + '"/>');

设置更改事件:

每当添加新元素时,都必须设置更改事件。

$('.probabilitate' + globalProp).change(function () {
    //do action
})

例子:

var globalProp = 1;

function appendInput(){
    $("#sameContainer").append('<input type="checkbox" id="inputId_a" value="check this" class="probabilitate' + globalProp + '"/>');
    $("#sameContainer").append('<input type="checkbox" id="inputId_b" value="or this" class="probabilitate' + globalProp + '"/>');
    $("#sameContainer").append('<input type="checkbox" id="inputId_c" value="or this" class="probabilitate' + globalProp + '"/>');

    $('.probabilitate' + globalProp).change(function () {
        //do action
    })
};

希望这可以帮助。

于 2015-11-12T14:46:22.303 回答