2

JQueryで入力ボックスのリストを動的に作成していて、チェックされたときに通知するイベントがあります。

$("#myDiv").on("change",  "input[type='checkbox']" , function(){
   if(this.checked){
     alert("HERE");
     //...
   }else{
    alert("THERE");
    //...
   }
});

ページが読み込まれ、すべてのチェックボックスが表示されたら、チェックをオン/オフにすることでこれを入力できます。問題は、バックエンドロジックの結果に応じて、これらのいくつかを最初にチェックする必要があることです。したがって、初期ロード後にこの関数に入りたいと思います。

私は見ましたが.trigger().click()どちらもうまくいかないようです。

このコールバックに入るのに私が取ることができる別の道はありますか?

4

4 に答える 4

2

チェックボックスをオンにして表示する場合は、checkedプロパティを次のように設定します。checked

<input type='checkbox' checked='checked' />

change();イベントを発生させたい場合は、

$('<your_checkbox>').change(); 

また

$('<you_checkbox>').trigger('change');
于 2012-07-23T19:10:50.743 に答える
1

この場合、匿名関数を使用する代わりに名前付き関数を作成し、必要なときにいつでも呼び出すことができます。

var myFunction = function(){
   if(this.checked){
     alert("HERE");
     //...
   }else{
    alert("THERE");
    //...
   }
}

$("#myDiv").on("change", "input[type='checkbox']", myFunction );

// triggering the function manually:
$("#myDiv input[type='checkbox']").each( myFunction );
于 2012-07-23T18:49:01.287 に答える
0

myDivが変更されるとコードがトリガーされ、チェックボックスのリストを渡します。ここで「これ」はmydivです。使用しない理由:

$('input:checkbox').each(function(){// Now this is referring your checkbox});
于 2012-07-23T18:50:03.767 に答える
0

関数を名前で個別に定義し、チェックオフされた各項目のページがロードされた後に呼び出します。

function onChange(this) {
    if(this.checked){
        alert("HERE");
        //...
    }else{
        alert("THERE");
        //...
    }
}

チェックボックスの変更を監視するコードは次のようになります。

$("#myDiv").on("change",  "input[type='checkbox']" , function() {
    onChange(this);
});

コードがどのように見えるかわからないので、チェックボックスを印刷し、デフォルトで選択されるチェックボックスを定義するコードをいくつか作成しました。これはPHPですが、この概念はどのサーバー側言語でも機能するはずです。

<select>
<?php
$items = array(
    'value1' => 'text1',
    'value2' => 'text2',
    'value3' => 'text3'
);

$selected = array(
    'value1' => true,
    'value3' => true
);

foreach ($items as $value => $text) {
    $selectedAttr = isset($selected[$value]) && $selected[$value]) ?
        " selected='selected'" : '';
    echo "<option value='$value'$selectedAttr>$text</option>";
}
?>
</select>

選択したオプションごとに実行したい関数を実行するJavaScriptを印刷する必要があります。私が使用したチェックボックスの例の場合、必要な最終結果は次のとおりです。

$().ready(function() {
    var defaultSelected = [ "[option name='value1']" , "[option name='value3']" ];

    for (var i=0; i < defaultSelected.length; i++) {
        $(defaultSelected[i]).each(onChange);
    }
});

サーバー側でJavaScriptを生成する必要があります。

<?php

// $selected was defined in the previous code section

// Create selectors that will select each checkbox option
$selectors = array();
foreach ($selected as $s) {
    array_push($selectors, "[option name='$s']");
}

// Produces string: [ "[option name='value1']" , "[option name='value3']" ]
$jsSelectorArray = '[ "' . implode('" , "', $selectors) . '" ]';

echo "
$().ready(function() {
    var defaultSelected = $jsSelectorArray;

    for (var i=0; i < defaultSelected.length; i++) {
        $(defaultSelected[i]).each(function() {
            onChange(this);
        });
    }
});
";

?>
于 2012-07-23T19:29:43.747 に答える