如何用单行简化回调?

时间:2019-02-13 22:14:49

标签: javascript

考虑以下回调:

$('#btnDoStuff').on('click', function processBasicInfo() {    
  $('#modalBasicInfo').modal('show');
});

由于该函数仅包含一行,是否有办法像这样缩短它?

$('#btnDoStuff').on('click', $('#modalBasicInfo').modal('show'));

或其变体?

P.S。需要完全支持IE11的浏览器。

3 个答案:

答案 0 :(得分:1)

我不知道您为什么要使其缩短,但我想您可以删除函数名称。

$('#btnDoStuff').on('click', function() { return $('#modalBasicInfo').modal('show') });

或者您可以将函数与其所有参数绑定在一起:

$('#btnDoStuff').on('click', $('#modalBasicInfo').modal.bind($('#modalBasicInfo'), 'show'));

或者,如果您打算使用babel,则可以使用箭头功能。

$('#btnDoStuff').on('click', () => $('#modalBasicInfo').modal('show'));

答案 1 :(得分:1)

您可以bind modal调用事件处理程序

$('#btnDoStuff').on('click', $('#modalBasicInfo').modal.bind($('#modalBasicInfo'),'show'));

答案 2 :(得分:1)

不知道为什么要这么做,但是您可以使用.bind(),但没有任何意义。

$("button").on("click", $(".modal").modal.bind($(".modal"), "show"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<button>Foo</button>
<div class="modal">Bar</div>