1

这可能有点令人困惑,但它就是这样。我有第一组这样的复选框:

<input type="checkbox" id="quick" value="6" />
<input type="checkbox" id="quick" value="3" />

还有第二组这样的复选框:

<div class="check1"><input type="checkbox" id="1,3,4" value="6" /></div>
<div class="check1"><input type="checkbox" id="1" value="6" /></div>
<div class="check1"><input type="checkbox" id="6,4" value="6" /></div>

我需要获取第一个复选框的值并检查该值是否存在于第二组复选框的 id 数组中,并检查它们是否返回 true。这是我到目前为止所拥有的,但它不起作用:

$('#quick').click(function(){
        var perId = $(this).val();
        $('#check1 input[type="checkbox"]').attr('id').find(perId).attr('checked', true);
        });

有谁知道如何做到这一点?任何帮助将不胜感激!

4

1 回答 1

3

我改变了一些东西以使代码更明智(如果我破坏了任何东西,请告诉我)。

  1. “快速”复选框的 id 被删除,取而代之的是一个通用名称。
  2. .check1 中的各种复选框已将其 id 值转换为data-set属性。
<input type="checkbox" name="quick" value="6" />
<input type="checkbox" name="quick" value="3" />

<div class="check1">
    <input type="checkbox" data-set="1,3,4" value="6" />
    <input type="checkbox" data-set="1,3"   value="6" />
    <input type="checkbox" data-set="6,4"   value="6" />
</div>​
$(function () {

    "use strict";

    var $quick = $("[name=quick]"),
        $dSets = $(".check1 :checkbox");

    // We've changed a checkbox
    $quick.on("change", function () {
        // Uncheck all data-set elements
        $dSets.prop("checked", false);
        // Run through all checked quick elements
        $quick.filter(":checked").each(function (index, quick) {
            // Determine whether each data set element should be checked
            $dSets.prop("checked", function () {
                // Get array of values
                var set = $(this).data("set").toString().split(",");
                // Should this box be checked
                return this.checked || $.inArray(quick.value, set) > -1;
            });
        });
    });

});

小提琴:http: //jsfiddle.net/u2q8P/4/

于 2012-11-18T00:27:28.437 回答