在页面jquery没有触发

时间:2014-07-05 16:40:08

标签: php jquery

我有一个创建行的页面,其中包含具有非顺序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>
  <? } ?>

<? } ?>

2 个答案:

答案 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。最糟糕的情况是你必须在以后的代码中每周重新启动$。