传递事件处理程序的其他信息,同时以编程方式触发更改事件

时间:2017-06-28 12:17:13

标签: javascript jquery onchange

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

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

我可以从上面的代码中触发代码中的更改事件。我想将一些额外的信息传递给事件处理程序。想知道这样的事情是否可能。

4 个答案:

答案 0 :(得分:1)

您可以通过使用Jquery Trigger传递变量,然后将事件处理程序打开到额外变量来实现此目的。这是一个例子:



$("#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" />
&#13;
&#13;
&#13;

答案 1 :(得分:1)

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

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

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

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

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

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

享受:)

答案 2 :(得分:0)

// 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);
}

答案 3 :(得分:0)

你可以使用jQuery.trigger

$(选择器).trigger(&#34;点击&#34;,[&#34; foo&#34;,&#34; bar&#34;]);