我有一个创建行的页面,其中包括具有非顺序ids的复选框。根据数据库中的数据,有时需要检查onLoad。PHP正在遍历数据,创建页面。
问题是:我在循环中拥有的jquery无法工作。它不是检查复选框或触发更改事件。它也没有向我展示我在那里的console.logs。如果我选中内联复选框,这是有效的,但它不会触发更改事件,它必须使页面功能正确。
下面是一些代码:
<? 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>
<? } ?>
<? } ?>
发布于 2014-07-05 17:07:16
我强烈建议将javascript排除在循环之外。最糟糕的情况是,您必须稍后在代码中重新循环$weekly。
发布于 2014-07-05 16:50:24
您没有任何绑定来侦听更改事件,默认情况下,触发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)
这样的变量
https://stackoverflow.com/questions/24588508
复制相似问题