1

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

这是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>

我试图通过使用前缀选择器 [id^='blah_'] 来选择复选框。我能够使代码适用于第一个窗格,即:pane_0,但它不会在 pane_1 或更高版本上触发。

jquery(document).on("change", "[id^='blah_" + obj.id + "']", function() {
//code here
});

可能存在嵌套错误,因为我只是对 html 进行了粗略估计。奇怪的是我可以通过使用菊花链 .children() 语句看到它们,但我无法选择输入元素。

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

jquery(document).on("change", ".checked", function() {
 var ids = jquery(this).attr("id").split("_");
 if (ids[0] === "blah")
  //do code
 }
});

为清楚起见,编辑了 ID。id 结构是 "blah_" obj.id "_" 个体迭代器。所以窗格 0 上的 3 个复选框看起来像这样:blah_0_0 blah_0_1 blah_0_2

此页面上还有另外 2 组复选框列表,我不想使用这些功能作为目标,这就是我使用前缀选择器的原因。

4

2 回答 2

1

使用startsWith选择器的目的是不要尝试完成整个值,就像你正在做的那样,obj.id甚至obj.id定义了。

以下将找到ID以现有或未来input开头的所有内容。'blah_'

jQuery(document).on("change", "input[id^='blah_']", function() {
//code here
});

如果它们都共享一个公共类,则将类用作选择器会更有意义

jQuery(document).on("change", "input.blahblah", function() {
//code here
});

另请注意,除非您在自己的代码中另行定义,否则您jquery应该输入错字jQuery

重要说明ID 可能不会在页面中重复,以防您一直重复相同的复选框 ID。根据定义,它们必须是唯一的

于 2012-12-16T20:58:38.990 回答
0

这里是另一个示例:

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

​</p>

于 2012-12-16T21:07:42.950 回答