2

这是我的PHP代码:

<?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" checked="checked" onclick="checkbox_click(this);" />
<?php } else { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" onclick="checkbox_click(this);" />
<?php } ?>

jQuery:

function checkbox_click(current) {
  if($(current).is(':checked')) {
          // do stuff....
  } else {
          // do stuff....
  }
}

在上面的代码中,当$mod['display']为真时,复选框被选中但它不调用checkbox_click()函数。我尝试onchange=了,onclick=但它似乎没有任何效果。我需要将onclickor保留onchange在该字段中。

4

3 回答 3

1

尝试为此使用prop函数,您也不需要调用函数,您可以使用jquery.on()函数创建它,例如,

$(function(){
   $(document).on('click','.display_checkbox',function(){
      if($(this).prop('checked')) {
              // do stuff....
      } else {
              // do stuff....
      }
   });
});

然后onclick="checkbox_click(this);"从你的html checkbox element

更新

初始化它document ready

$(function(){
   $('.display_checkbox').each(function(){
      if($(this).prop('checked')) {
              // do stuff....
      } else {
              // do stuff....
      }
   });
});

阅读on()prop()

于 2013-06-25T04:53:22.363 回答
0

如果您希望在页面加载后执行功能,并且每次更改复选框状态时都执行此操作,您应该这样做:

<?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" checked="checked" onclick="checkbox_click(this);" />
<?php } else { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" onclick="checkbox_click(this);" />
<?php } ?>

并在脚本中:

function checkbox_click(current) {
  if($(current).is(':checked')) {
          // do stuff....
  } else {
          // do stuff....
  }
}

$(function(){
   $('.display_checkbox').each(function(){
      checkbox_click($(this));
   });
});

另外,我不会那样做。在这种情况下,您应该使用 onchange 事件绑定。

我认为的最佳解决方案是:

<input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" <?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>checked="checked"<?php } ?> />

和 javascript 应该是这样的:

$(function(){
   $('.display_checkbox').change(function(){
      if($(this).is(':checked')) {
          // do stuff....
      } else {
          // do stuff....
      }
   });

   $('.display_checkbox').each(function(){
      $(this).change();
   });
});
于 2013-06-25T06:44:15.383 回答
0

尝试这个:

<?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>
    <input class="display_checkbox selectedcheckbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" checked="checked" onclick="checkbox_click(this);" />
<?php } else { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" onclick="checkbox_click(this);" />
<?php } ?>

jQuery:

$(document).ready(function(){
   var obj = $(".selectedcheckbox");
   var found = obj.length;
   if(found == 1)
   {
     checkbox_click(obj);
   }
});

function checkbox_click(current) {
  if($(current).is(':checked')) {
      // do stuff....
  } else {
      // do stuff....
  }
}
于 2013-06-25T07:00:09.953 回答