【问题标题】:Store a javascript function in a variable and call manually将javascript函数存储在变量中并手动调用
【发布时间】:2017-11-23 08:07:53
【问题描述】:

我想将函数引用存储在一个变量中,并通过在需要的地方调用来重新使用它。假设我有一个像这样的点击绑定函数:

var clickEvent = $('#mode').click(function () {
   alert("Hello");
});

我想像这样重复使用它:

//call somewhere
clickEvent();

但是显示错误 clickEvent is not a function,为什么?

【问题讨论】:

  • 请澄清您的问题。如果你想设置一个事件监听器,你可以直接这样做。否则,使用function clickEvent()
  • .click() 不返回函数,它返回调用它的 jQuery 对象,因此可以将它们链接起来。你期待clickEvent() 做什么?

标签: javascript function event-handling dom-events


【解决方案1】:

将 sn-p 保留在 function 中,但即使在这种情况下,也不会触发 click 事件。

var x = function() {
  $('#mode').click(function() {
    alert("Hello");
  });
   // on call of this function click event will
  $("#mode").trigger('click')
}
x()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="mode"> Click</button>

只有 javascript

var x = function() {
  var el = document.getElementById('mode')
  el.addEventListener('click', function() {
    alert('clicked')
  })
  el.click();
}
x()
&lt;button id="mode"&gt; Click&lt;/button&gt;

【讨论】:

  • 不知道@brk 我没有...谢谢,但我可以在没有 jquery 的情况下在 javascript 中做同样的事情吗?
  • 你可以添加javascript吗
  • @subhajit 添加了新的 sn-p,只有 js
【解决方案2】:

$('#mode').click(...) 不返回函数,它返回$('#mode') 的值,以便您可以链接方法,例如$('#mode').click(...).change(...).

如果您想要处理函数的名称,请单独定义:

function clickEvent() {
    alert("Hello");
}

然后在事件绑定中使用:

$("#mode").click(clickEvent);

或者直接调用:

clickEvent();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 2014-03-14
    • 2021-06-22
    相关资源
    最近更新 更多