【问题标题】:Trigger event in jQuery with params使用参数触发jQuery中的事件
【发布时间】:2021-09-12 00:30:18
【问题描述】:

我正在使用django-autocomplete-light 库在我的表单中有一个ModelSelect2 字段。我需要从外部更改当前选定的项目。该库有以下代码来处理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 变量但没有找到数据。如何更新触发事件,使其正确传递参数。

【问题讨论】:

    标签: javascript jquery jquery-events


    【解决方案1】:

    您可以用$element.on('select2:selecting', function (e, customParrams) { ... } 代替$element.on('select2:selecting', function (e) { ... }。使用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">

    有关更多示例,您可以访问following page 上的 jQuery 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 2014-02-11
      • 2011-06-05
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多