在以编程方式触发更改事件时为事件处理程序传递附加信息

Pass additional info for event handlers while triggering change event programmatically

$('#idofElement').change(function(e, additionalData) {
  //event code
}

$('#idofElement').trigger('change', { someAdditionalData : 'value' });

正如您在上面看到的那样,我正在从代码中触发更改事件。我想将一些附加信息传递给事件处理程序。想知道这样的事情是否可行。

// say your selector and click handler looks something like this...

$("some selector").click({param1: "Hello", param2: "World"}, cool_function);

// in your function, just grab the event object and go crazy...
function cool_function(event){
    alert(event.data.param1);
    alert(event.data.param2);
}

你可以 jQuery.trigger

$(选择器).trigger("click", ["foo", "bar" ] );

您可以通过使用 Jquery 触发器传递一个变量,然后将您的事件处理程序开放给额外的变量来实现这一点。这是一个例子:

$("#foo").on("click", function(event, data1, data2) {
  console.log(data1); //logs "hello"
  console.log(data2); //logs "goodbye"
});

$('input:button').click(function() {
  $("#foo").trigger("click", ["hello", "goodbye"]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="foo" type="text" />
<input type="button" value="click me to trigger change event" />

您可以像这样使用 data() 方法存储数据:

$('#idofElement').trigger('change').data('someAdditionalData', value);

然后您可以像这样访问数据对象:

$('#idofElement').on('change', function(){
    if(data = $(this).data('someAdditionnalData')) {
       data...
    }
});

如果您想删除对象数据,请执行

$('#idofElement').removeData('someAdditionnalData');

尽情享受吧:)