jQuery 复选框 单击同步(需要正则表达式)



我有两个复选框组,我最终需要其中一个影响另一个的输出。我已经参考了这个问题/答案,它似乎让我朝着一个大的方向前进,但这里需要一些regex,我不太熟悉。

下面是第一个复选框组:

<div class="tabs-panel" id="wood_types-all" style="display: block;">
    <input type="hidden" value="0" name="tax_input[wood_types][]">
    <ul class="list:wood_types categorychecklist form-no-clear" id="wood_typeschecklist">
        <li class="popular-category" id="wood_types-33"><label class="selectit"><input type="checkbox" id="in-wood_types-33" name="tax_input[wood_types][]" value="33"> Clear Pine</label></li>
        <li class="popular-category" id="wood_types-35"><label class="selectit"><input type="checkbox" checked="checked" id="in-wood_types-35" name="tax_input[wood_types][]" value="35"> Oak</label></li>
        <li class="popular-category" id="wood_types-34"><label class="selectit"><input type="checkbox" checked="checked" id="in-wood_types-34" name="tax_input[wood_types][]" value="34"> Poplar</label></li>
        <li class="popular-category" id="wood_types-36"><label class="selectit"><input type="checkbox" id="in-wood_types-36" name="tax_input[wood_types][]" value="36"> PVC</label></li>
    </ul>
</div>

我尝试提取和比较的值是(例如),33 id="wood_types-33"

另一个复选框组是:

<div class="field field-categories" id="acf-mp_wood_species_availability"><label for="fields[field_4f7f4709cdb16]" class="field_label">Wood Species Availability</label>
    <ul>
        <li>
            <input type="checkbox" class="33" value="clear-pine" name="fields[field_4f7f4709cdb16][]" id="fields[field_4f7f4709cdb16][]">&nbsp;Clear Pine
        </li>
        <li>
            <input type="checkbox" class="34" value="poplar" name="fields[field_4f7f4709cdb16][]" id="fields[field_4f7f4709cdb16][]">&nbsp;Poplar
        </li>
        <li>
            <input type="checkbox" checked="" class="35" value="oak" name="fields[field_4f7f4709cdb16][]" id="fields[field_4f7f4709cdb16][]">&nbsp;Oak
        </li>
        <li>
            <input type="checkbox" class="36" value="pvc" name="fields[field_4f7f4709cdb16][]" id="fields[field_4f7f4709cdb16][]">&nbsp;PVC         
        </li>
    </ul>
</div>

因此,这两个复选框组确实共享一个共同的属性id="wood_types-33"class="33"

我最终要做的是默认隐藏所有第二个复选框(我知道可以这样做):

$('#acf-mp_wood_species_availability li').hide();

如果选中了第一个复选框组中的匹配项,则可以选择第二个组(未选择,只需show())。我还试图让它在页面加载时"查找"这些匹配项(因此,如果有人回来编辑该项目,则选择可用),并且如果取消选择第一个复选框组中的项目(被选中后),那么第二个复选框组项目不仅应该消失,而且还应该取消选中(这可以通过click()完成)。我已经有一段时间了,还没有走得很远,所以任何帮助将不胜感激。谢谢!

入门 jFiddle: http://jsfiddle.net/JfwWv/

我看到了这是jQuery中正则表达式的备忘单-但是我找不到match()函数的任何参考-->我只是想错了-这是参数$()正常的选择器吗?

var numberToCompare = "#wood_types-33".split("-")[1];

基本上,对字符串调用 .split() 会返回在指定字符上拆分的该字符串的数组。在这种情况下,"wood_types-33".split("-")返回一个包含两个索引的数组,即"-"之前和之后的索引。我们需要之后的东西;因此,最后的[1]

这样做会更快:

var myStr = "#wood_types-33";
myStr = myStr.substr(myStr.lastIndexOf("-")+1);

但是有点难以解释。它只是工作。:p

最新更新