1

ユーザーのコンテンツに基づいて動的に生成されるチェックボックスの形式があります。チェックボックスのセクションはカテゴリごとに分割されており、各カテゴリにはプロジェクトが含まれています。データベースの目的で、カテゴリ値には非表示のチェックボックスがあります。チェックボックスがオンになっているサブアイテムがカテゴリにある場合は、カテゴリチェックボックスもオンになります。

JQuery .click()を使用してこれを正常に機能させることができましたが、ページが読み込まれたときにそれを行う方法がわかりません。

チェックボックスが実際にクリックされたときのコードは次のとおりです。

$(".project").click(function() {

    if($(this).is(":checked") && $(this).hasClass("project")) {
       $(this).parent().parent().children(':first').attr('checked', true);

    }else if(!$(this).parent().children('.project').is(":checked")){
        $(this).parent().parent().children(':first').attr('checked', false);

    }
 });

これらのボックスのステータスを編集しているとき(つまり、データベースに保存された後)、子プロジェクトがチェックされていても、カテゴリボックスはチェックされた状態で表示されません。そのカテゴリの子がチェックされている場合、ロード時にカテゴリボックスがチェックされるようにするにはどうすればよいですか?

私が思う問題の一部は、動的に変化する親子の設定にありますが、チェックするために親ボックスを見つけるにはどうすればよいですか?ありがとう!

4

2 に答える 2

0

編集:

親要素が一意のクラスを持っているとしましょう。

<div class="parent">
    <input type="checkbox" />
    <div>
        <input type="checkbox" class="project" checked="checked" />
    </div>
    <div>
        <input type="checkbox" class="project" />
    </div>
</div>

ページの読み込み時に次のようなことができます。

$('.parent:has(.project:checked)').children(':first').attr('checked','checked');

これにより、クラスがあり、チェック.parentされている子孫が少なくとも 1 つある要素が返されます。project

:hasセレクターのドキュメントhttp://api.jquery.com/has-selector/


ページの読み込み時にハンドラーを実行するclick場合は、手動でトリガーできます。

$(".project").click(function() {

    if($(this).is(":checked") && $(this).hasClass("project")) {
       $(this).parent().parent().children(':first').attr('checked', true);

    }else if(!$(this).parent().children('.project').is(":checked")){
        $(this).parent().parent().children(':first').attr('checked', false);

    }
 });

$('.project').click();  // Triggers the click event handler 

これは次の省略形です。

$('.project').trigger('click');  // Accomplishes the same as above
于 2010-06-01T16:35:00.963 に答える
0

トリガーをバインドするためにlive()メソッドを使用することをお勧めします。これは、動的に作成された要素にバインドを適用するように設計されています。

于 2010-06-01T16:38:05.293 に答える