jQuery 在 2 个动态生成的图层下触发事件

jQuery trigger events under 2 dynamically generated layers

我一直在使用 jquery 在使用 ondelegate 等动态生成的文本字段上触发事件,正如 this answer. 中所述好吧,但是当我尝试添加另一个动态生成的图层时,我无法触发动作。例如

动态添加人员到列表中没问题

| People List
|
| 1) Name _______
|
|  ---------------------
| |Click to add a person|
|  ---------------------
|

如果我想动态地将人员添加到列表中并在每次焦点位于文本框时触发警报,下面的方法就可以正常工作

$('div.people-list').delegate('input.name', 'focusin', function(){
  alert("textbox focusedin");
});

当我有一个列表列表时,问题就来了。 所以说我想要一个多辆公共汽车的动态列表和一个多位乘客的动态列表。如下所示。

| Bus List
|
|  1)  Bus ID_______
|   
|   | Passenger List
|   |
|   | 1) Name _______
|   |
|   |  ---------------------
|   | |Click to Add a Person|
|   |  ---------------------
|
|  ------------------
| |Click to Add a Bus|
|  ------------------

在那种情况下,我上面的javascript使用delegate似乎是不够的。我需要添加什么来触发这种嵌套事件?

即使它很重要(虽然我不认为它会),我正在使用 rails 和茧 gem 用于场动力学。

由于您是动态添加控件,因此如果您使用 document 引用它们以委托给它们,那将会很好。所以你可以试试下面的代码。

$(document).delegate('input.name', 'focusin', function(){
  alert("textbox focusedin");
});