我有一个创建行的页面,其中包含具有非顺序ID的复选框。根据数据库中的数据,有时需要检查onLoad。 PHP循环遍历数据,创建页面。
问题:我在循环中的jquery无法正常工作。它没有选中复选框或触发更改事件。它也没有向我显示我在那里的console.logs。如果我勾选内联复选框,那IS工作正常,但它不会触发更改事件,它必须使页面正常运行。
这里有一些代码:
<? foreach($weekly as $w){ ?>
// create the row
<input type="checkbox" id="slW_4" name="slW_4" <? if($w['current_sl_id']){echo 'checked';} ?>>
<? if($w['current_sl_id']){ ?>
<script language="text/javascript">
$(document).ready(function(){
$('#slW_4').prop('checked', true);
console.log('should have checked the checkbox: '+ $('#slW_4').is(':checked'));
$('#slW_4').trigger("change");
console.log('should have triggered change');
});
</script>
<? } ?>
<? } ?>
答案 0 :(得分:0)
您没有任何约束力来听取更改事件,默认情况下触发change
不会对实际复选框执行任何操作。
你需要一个像这样的监听器:
$('#slW_4').on('change', function (event) {
// ...do something here
});
// Rest of your code underneath
然后$('#slW_4').trigger("change");
将触发该功能
也不相关,但在顶部,如果您经常调用$('#slW_4')
,我会将其存储在var $sl4 = $('#slW_4')
之类的变量中并使用该变量,如$sl4.prop('checked', true)
< / p>
答案 1 :(得分:0)
我强烈建议您在该循环之外设置javascript。最糟糕的情况是你必须在以后的代码中每周重新启动$。