1

これは少し紛らわしいかもしれませんが、ここにあります。次のようなチェックボックスの最初のセットがあります。

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

そして、次のようなチェックボックスの2番目のセット:

<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>

最初のチェックボックスの値を取得し、その値が2番目のチェックボックスのセットの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 に答える