所以我有以下问题。我正在尝试将两个事件添加到一个复选框表中。
这是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 ^ =&#39; blah _&#39;]来选择复选框。我可以让代码适用于第一个窗格,即: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结构是&#34; blah _&#34; obj.id&#34; _&#34;个人迭代器。因此,窗格0上的3个复选框如下所示: blah_0_0 blah_0_1 blah_0_2
此页面上还有另外两组复选框列表,我不希望使用这些功能进行定位,这就是我使用前缀选择器的原因。
答案 0 :(得分: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
中的拼写错误应为{{1}},除非您在自己的代码中另有定义
重要提示如果您重复使用相同的复选框ID,则可能不会在页面中重复ID。根据定义,它们必须是唯一的
答案 1 :(得分:0)
这里是另一个样本:
$("body").on({
click:function(){
// where $(this) is the current item changed
}
}, "input.blahblah");