首页 > 解决方案 > 使用参数触发jQuery中的事件

问题描述

我正在使用该django-autocomplete-lightModelSelect2在我的表单中有一个字段。我需要从外部更改当前选定的项目。该库具有以下代码来处理select2:selecting事件。

document.addEventListener('dal-init-function', function () {
    ...
    yl.registerFunction( 'select2', function ($, element) {

        $element.on('select2:selecting', function (e) {
            var data = e.params.args.data;

            if (data.create_id !== true)
                return;

            e.preventDefault();
            ...

我开发了以下行来触发事件:

        params = {
            "params": {
                "args": {
                    "data": {
                        id: "324856",
                        selected_text: "ABERTAMY (Karlovy Vary)",
                        text: "ABERTAMY (Karlovy Vary)"
                    }
                }
            }
        };
        $( "#id_hlavni_katastr" ).trigger( "select2:selecting", params )

但是,参数没有传递,我搜索了整个e变量而没有找到数据。如何更新触发事件,使其正确传递参数。

标签: javascriptjqueryjquery-events

解决方案


而不是$element.on('select2:selecting', function (e) { ... },您可以将其替换为$element.on('select2:selecting', function (e, customParrams) { ... }。使用该trigger方法时传递的参数将填充到customParrams变量中。这是一个例子:

$('input').on('click', function (e, customParams) {
  console.log(customParams.params.args.data);
});

var params = {
  "params": {
    "args": {
      "data": {
        id: "324856",
        selected_text: "ABERTAMY (Karlovy Vary)",
        text: "ABERTAMY (Karlovy Vary)"
      }
    }
  }
};

$('input').trigger('click', params);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="hidden">

有关更多示例,您可以访问下一页上的 jQuery文档


推荐阅读