按名稱分別定義您的功能,然後在頁面加載後爲每個已檢查過的項目調用它。
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);
});
}
});
";
?>
我不知道是什麼做答案。你可以創建一個jsFiddle嗎? – davidbuzatto 2012-07-23 18:35:17
因爲你附加到'change'事件,你試過'.change()'嗎? – MrOBrian 2012-07-23 18:36:35