没有事件的射击事件功能

时间:2014-05-22 17:58:20

标签: javascript

我正在尝试找到一种方法来重用从事件绑定中触发的函数。

此问题是由浏览器记住复选框状态引起的,因此我必须在文档就绪时触发该功能。

我知道我可以将setGrid()放在一个匿名函数中并传入元素,但这样就很难解除特定事件的绑定。

HTML:

<input type="checkbox" value="grid" id="checkbox-grid">

使用Javascript:

function setGrid(e) {

  var $this = $(e.target); // "error: e is undefined" on situation 2

  if( $this.is(':checked') ){
       // do something if checkbox is checked
  }
  else{
       // do something if checkbox isn't
  }
}

// 1. event binding
$('#checkbox-grid').on('change', setGrid);

// 2. function fired on page ready
setGrid();

1 个答案:

答案 0 :(得分:2)

您可以使用您拥有的第一个解决方案。由于您正在使用jQuery,因此很容易触发该函数,您只需触发它与之关联的事件即可。所以:

$('#checkbox-grid').on('change', setGrid);    // to set it up; then
$('#checkbox-grid').trigger("change");        // fires the change event of the
// checkbox, so fires the function.

您可以对任何事件执行此操作,只需将change替换为该事件即可。但是,由于某种原因您可能会使用change,因此最好不要这样做。

希望这有帮助。