我结合了 jQuery 和 Javascript 的正则表达式来解决这个问题。这里:http:
//jsfiddle.net/HbtjZ/31/
.change() 检测结合了 jquery 选择器以仅检测相关复选框的更改。Javascript 用于从该复选框的 ID 字段中提取数字并构建用于 ID 选择我希望隐藏的文本 div 的字符串(它们实际上是输入框,但在任何一种情况下都由 ID 匹配)。
我没有找到一种方法来正则表达式选择 div 并将它们串联切换,使用类似的东西:
var matchString = 'input:not(:checkbox)[id^="foo_' + myNumber + '_"]'
$(matchString).toggle()
这似乎只匹配一个实例 - 复选框,然后根据“不”忽略它;我为每个与 ID 匹配的 div 使用了一个切换线来解决此问题。
这里有一个很好的console.log输出分解来检查进度
脚本:
$(function(){
$("input[type='checkbox'][id^='foo_']").change(function(){
foundID = $(this).attr('id')
console.log('We Found ID ' + foundID);
var myMatch = foundID.match(/foo_(\d+)_barx*/);
var myNumber = myMatch[1]
console.log('We Found Number ' + myNumber);
var matchStringA = '#foo_' + myNumber + '_baz'
var matchStringB = '#foo_' + myNumber + '_bay'
console.log('JQ ID String To Match ' + matchStringA + ' and ' + matchStringB);
$(matchStringA).toggle()
$(matchStringB).toggle()
});
});
HTML:
<input type="checkbox" id="foo_1_bar"/>
<div id="foo_1_baz">
Toggle This Visibility With Checkbox #1 Change
</div>
<div id="foo_1_bay">
Toggle This Visibility With Checkbox #1 Change
</div>
<input type="checkbox" id="foo_2_bar"/>
<div id="foo_2_baz">
Toggle This Visibility With Checkbox #2 Change
</div>
<div id="foo_2_bay">
Toggle This Visibility With Checkbox #2 Change
</div>