2014-07-05 40 views
0

我有一个页面正在创建行,其中包括具有非顺序ID的复选框。根据数据库中的数据,有时需要在onload上检查它们。 PHP正在循环数据,创建页面。在jquery页面没有触发

问题:我在循环内的jquery无法正常工作。它不检查复选框或触发更改事件。它也没有显示我在那里的console.log。如果我检查内联复选框,那是工作,但它不会触发更改事件,它必须正确地使页面功能。

这里的一些代码:

<? 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

您的doc.ready处理程序在循环内部=不正确 – adaam

+0

我强烈建议在该循环之外考虑您的JavaScript。最糟糕的情况是,你必须稍后在代码中重新使用'$ weekly'。 –

+2

您也在每个循环上输出相同的ID。 '$('#slW_4')'只会获得具有该ID的第一个元素。 –

回答

0

我强烈建议在该循环之外考虑您的JavaScript。最糟糕的情况是,你必须在代码中每周重新使用$。

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)

+0

我认为当你说*你正在调用[相同的id'd结果]很多*时,你就错过了一个明显的问题,但是不认识它是*一遍又一遍的相同的ID。 –