Jquery或Javascript-Regex通过ID匹配元素,并使用类似ID更改其他元素
每个do循环都在rails表单上创建一些html。 循环创建带有ID(如foo_1_blah、foo_2_blah)的复选框,以及ID中具有类似开头和匹配数字的其他元素 使用通配符,当其中一个匹配的复选框被更改时, 如果该复选框的ID匹配: /福乌1_*/ 我想。隐藏一些匹配的输入框: /福尤巴尔克斯_*/ /福乌1_巴里_*/ 我不想隐藏复选框。在某些语言中,我会这样做 /foo\u\n_*/ 然后我就可以用1美元得到号码并匹配 /foo_$1_barx*/ /foo_u$1_ubary*/ 。。。但不知道如何在jQuery或javascript中使用dom树遍历实现这一点。 如果有一种方法可以标记Rails表单以启用此功能,那么也可以使用。在jQuery中,我相信$input:not:checkbox[id |=foo_1_bar]。hide可以使用Jquery或Javascript-Regex通过ID匹配元素,并使用类似ID更改其他元素,javascript,jquery,ruby-on-rails,regex,Javascript,Jquery,Ruby On Rails,Regex,每个do循环都在rails表单上创建一些html。 循环创建带有ID(如foo_1_blah、foo_2_blah)的复选框,以及ID中具有类似开头和匹配数字的其他元素 使用通配符,当其中一个匹配的复选框被更改时, 如果该复选框的ID匹配: /福乌1_*/ 我想。隐藏一些匹配的输入框: /福尤巴尔克斯_*/ /福乌1_巴里_*/ 我不想隐藏复选框。在某些语言中,我会这样做 /foo\u\n_*/ 然后我就可以用1美元得到号码并匹配 /foo_$1_barx*/ /foo_u$1_ubary*/
这是选择所有不是复选框:not:checkbox且id以foo_1_bar[id |=foo_1_bar]开头的输入标记。我不认为你可以使用通配符,但是css选择器可以给你更多的灵活性。看看css选择器的更多信息。我结合了jQuery和Javascript的正则表达式来解决这个问题。在这里: .change检测组合了jquery选择器,仅检测对相关复选框的更改。Javascript用于从复选框的-ID字段中提取数字,并构建用于ID选择我想要隐藏的文本div的字符串。它们实际上是输入框,但在任何情况下都与ID匹配 我没有找到一种方法来使用regex选择div并依次切换它们,例如: var matchString='input:not:checkbox[id^=foo_'+myNumber+''u]' $matchString.toggle 这似乎只匹配一个实例-复选框,然后根据“not”忽略它; 我为每个与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:
嗨,Joseph,你可以试试这样的正则表达式:。这样可以避免复选框-谢谢。现在,如何匹配1、2等,并将它们应用于隐藏,以匹配特定复选框的相应元素。我不完全确定您的意思。你会有类似和相应的东西,然后想隐藏foo_1_baz并用foo_1_bar做些什么,隐藏foo_2_baz并用foo_2_bar做些不同的事情吗?
<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>