使用.on selector

时间:2017-12-24 05:46:24

标签: jquery selector

我有一个动态生成的表单,根据用户输入呈现字段。我无法将事件直接绑定到动态生成的字段,因为它们在首次呈现DOM时不存在。但是,我可以使用jquery" .on'通过像document这样的父元素绑定事件的方法。这是因为" .on"接受一个选择器来选择子元素"

.on( events [, selector ] [, data ], handler )

在我的测试中,我可以传入静态选择器并成功绑定事件。

$(document).on('click','#id_task_size_edit',function(){
//     $('#id_task_amount').prop('disabled',false).css("background-color","#FFFACD");

然而问题是每个字段id也是动态生成的,看起来像id_task_size_edit_1,id_task_size_edit_2和id_task_amount_1等。

我认为我可以在选择器中使用通配符来捕获以id_task_size_edit开头的所有事件,如此

$(document).on('click',"'input[id^=id_task_size_edit]'",function(){

然而,这不起作用。我还尝试了[id * = id_task_size_edit]有和没有"输入"语法和通配符的任何更多组合,但似乎没有任何作用。我丢失的东西或通配符都不能传递给jquerys .on函数的选择器字段。

如何使用动态生成的ID完成动态生成字段的绑定事件?

2 个答案:

答案 0 :(得分:2)

只需将"'input[id^=id_task_size_edit]'"替换为'[id^="id_task_size_edit"]'即可。下面的工作示例。

$(document).on('click', '[id^="id_task_size_edit"]', function() {
   $(this).text("It is working!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="id_task_size_edit_1" type="button">Click Me</button>

答案 1 :(得分:0)

而不是ID,给他们一个共同的class,并在你的JQuery中使用它:

$(document).on('click','.some_common_class_name',function(){