0

首先,对不起我的英语,我还在学习:)。

我的问题是下一个,我用 jQuery 动态添加了一些 HTML 内容,特别是这些inputs

<td id="date"><input type="text" id="input_1" class="select" /></td>
<td id="date"><input type="text" id="input_2" class="select" /></td>
<td id="date"><input type="text" id="input_3" class="select" /></td>
<td id="date"><input type="text" id="input_4" class="select" /></td>
<td id="date"><input type="text" id="input_X" class="select" /></td>

输入的数量取决于我的数据库中有多少寄存器。

另一方面,我在 jQuery 中使用了与相同内容一起使用的这段代码,但它不是动态添加的。添加上述内容后,我尝试执行此脚本:

$('input')
    .filter(function() {
    return this.id.match(/input_./);
})
.foo({
    ....
});

当我尝试将相同的脚本与动态内容一起应用时,它不起作用,它不匹配任何东西。

我阅读了delegate()live()方法,但我不明白如何在我的情况下使用它们,因为我看到的所有示例都是针对处理程序事件的。

任何人都知道我该如何解决这个问题。

提前致谢。

4

1 回答 1

0
$(document).on('change', 'input[id^=input_]', function() {
    /* Do stuff */
});

所以你可以做类似这个演示的事情

// Wrap inside a document ready
// Read .on() docs (To ensure the elements...bla bla)
$(document).ready( function () {

    input_index = 0;

    setInterval(addInput, 1000);

    $(document).on('change', 'input[id^=input_]', function() {
        $(this).val($(this).attr('id'));
    });

    function addInput () { 
        $('<input type="text" id="input_'+input_index+'"/>')
          .appendTo('#empty')
          .change();   // <============================ Pay attention to this
        input_index++;
    }

});
于 2013-08-12T09:47:48.910 回答