Javascript 在动态生成的元素上只触发一次

Javascript 在动态生成的元素上只触发一次,javascript,jquery,Javascript,Jquery,所以我有以下问题。我正在尝试将两个事件添加到复选框表中 下面是一个html示例 <body> <div id='container'> //static element, everything beyond this element is dynamic <div id='pane_x'> <div id='bottom_x'> <div id='bottom_left_x'> <div id='results

所以我有以下问题。我正在尝试将两个事件添加到复选框表中

下面是一个html示例

<body>
<div id='container'> //static element, everything beyond this element is dynamic
 <div id='pane_x'>
  <div id='bottom_x'>
   <div id='bottom_left_x'>
    <div id='results_x'>
     <div id='list_x'>
      <div id='table_1'>
       <table>
        <tbody>
         <tr>
          <td>
           <input type='checkbox' name='blah' id='blah_obj.id_x' class='blahblah'>
          </td>
         </tr>
        </tbody>
       </table>
      </div>
     </div>
    </div>
   </div>
  </div>
 </div>
</div>
可能有嵌套错误,因为我只是对html做了一个大概的估计。奇怪的是,我可以通过使用菊花链.children()语句看到它们,但我无法选择输入元素

由于注释不支持与本节相同的代码块,因此我将在此处添加注释:

jquery(document).on("change", ".checked", function() {
 var ids = jquery(this).attr("id").split("_");
 if (ids[0] === "blah")
  //do code
 }
});
为清晰起见,编辑了id。id结构是“blah_u2;”obj.id“2;”单个迭代器。因此,窗格0上的3个复选框如下所示: 废话 胡说八道 胡说八道


这个页面上还有另外两组复选框列表,我不想使用这些函数,这就是我使用前缀选择器的原因。

如果定义了
obj.id
,那么使用
startsWith
选择器的目的不是像使用
obj.id
一样尝试完成整个值

下面将找到所有ID以“blah”开头的
输入
,,无论是现有的还是将来的

jQuery(document).on("change", "input[id^='blah_']", function() {
//code here
});
如果它们都共享一个公共类,那么将类用作选择器就更有意义了

jQuery(document).on("change", "input.blahblah", function() {
//code here
});
还要注意,除非您在自己的代码中另有定义,否则您在
jquery
中的输入错误应该是
jquery


重要注意事项如果您重复了相同的复选框ID,则ID可能不会在页面中重复。根据定义,ID必须是唯一的

使用
startsWith
选择器的目的是,如果定义了
obj.ID
,则不要像使用
obj.ID
一样尝试完成整个值

下面将找到所有ID以“blah”开头的
输入
,,无论是现有的还是将来的

jQuery(document).on("change", "input[id^='blah_']", function() {
//code here
});
如果它们都共享一个公共类,那么将类用作选择器就更有意义了

jQuery(document).on("change", "input.blahblah", function() {
//code here
});
还要注意,除非您在自己的代码中另有定义,否则您在
jquery
中的输入错误应该是
jquery

重要注意事项如果您重复了相同的复选框ID,则可能不会在页面中重复ID。根据定义,它们必须是唯一的

这里是另一个示例:

$("body").on({
    click:function(){
        // where $(this) is the current item changed
    }
}, "input.blahblah");

这里是另一个示例:

$("body").on({
    click:function(){
        // where $(this) is the current item changed
    }
}, "input.blahblah");


是否有许多输入具有相同的id?像两个不同窗格中具有相同id的两个输入一样?我认为您应该使用
.live()
和动态生成的元素。哪里定义了
obj.id
?为什么不使用checkbox类作为选择器呢?
obj.id
包含什么?如果要匹配整个id,为什么要使用
id^=
?这将使
blah_1
的选择器也匹配
blah_10
blah_11
,等等。好的,我刚刚看到
.live()
已被弃用,因此它应该是正确的选择…是否有许多具有相同id的输入?像两个不同窗格中具有相同id的两个输入一样?我认为您应该使用
.live()
和动态生成的元素。哪里定义了
obj.id
?为什么不使用checkbox类作为选择器呢?
obj.id
包含什么?如果要匹配整个id,为什么要使用
id^=
?这将使
blah_1
的选择器也匹配
blah_10
blah_11
,等等。好的,我刚刚看到
.live()
已被弃用,因此它应该是正确的选择……我想使用startsWith选择器的原因是页面上有多组复选框。我不想用这些函数来选择所有的函数,只是其中的一个子集。那些带有支票前缀的。此外,id比我在示例中输入的稍长。它实际上是blah_obj.id_x,如果我有3个复选框,它看起来就像这个obj.id=1;诸如此类的。好吧。。因此,您无法找到所有的集合,您需要提供更精确的细节,说明您希望过滤掉的集合之间的差异。你能修改类吗?或者是否有一些祖先可以用来帮助筛选。一些实时html会有帮助。。。可以很容易地从browserI抓取样本,我发现blah_0_x,但其他任何blah_1_x blah_2_x等都不会受到影响。不幸的是,我无法获取实时数据,因为它包含大量机密信息。我尝试将一个特定的类添加到我想要获取的元素中,但由于某些原因,它没有正确地编写类,或者另一个函数正在覆盖它们?它们在不同的列中吗?如果您可以让服务器管理将类添加到所需类的逻辑,则类听起来是最简单的路径。也可以使用ID以外的
data-
属性来帮助标记我之所以要使用startsWith选择器,是因为页面上有多组复选框。我不想用这些函数来选择所有的函数,只是其中的一个子集。那些带有支票前缀的。此外,id比我在示例中输入的稍长。它实际上是blah_obj.id_x,如果我有3个复选框,它看起来就像这个obj.id=1;诸如此类的。好吧。。因此,您无法找到所有的集合,您需要提供更精确的细节,说明您希望过滤掉的集合之间的差异。你能修改类吗?或者是否有一些祖先可以用来帮助筛选。一些实时html会有帮助。。。可以很容易地从browserI抓取样本,我发现blah_0_x,但其他任何blah_1_x blah_2_x等都不会受到影响。不幸的是,我无法获取实时数据,因为它包含大量机密信息。我尝试将一个特定的类添加到我想要获取的元素中,但由于某些原因,它没有正确地编写类,或者另一个函数正在覆盖它们?它们在不同的列中吗?如果您可以让服务器管理将类添加到所需类的逻辑,则类听起来是最简单的路径。也可以使用
数据-
其他属性