jQuery 触发在带有附加数据的标记中声明的事件

jQuery trigger event declared in tag with additional data

我有一个带有更改事件处理程序的 select:

<select id="mySelect" onchange="changedMySelect">
   <option value="test1">Test1</option>
   <option value="test2">Test2</option>
</select>

function changedMySelect(event, myParam1, myParam2) {
   alert(myParam1);
}

我希望能够通过附加参数(myParam1、myParam2)触发此事件(在 HTML 中声明)。

$("#mySelect").trigger("change", myParamValue1, myParamValue2);

但是 myParam1 是未定义的,就像用户点击时一样(这是预期的)。如何发送 myParamValue1?

理想情况下,我不应该将 HTML 中声明的 onchange 移动到 Javascript(已确认有效)。我们需要将 onchange 保留在 HTML 中,但如果需要我们可以修改它。

当您使用 onchange="something" 属性时,被调用的函数将只接收您放入属性中的内容。它不会得到事件或其他任何东西。因此,放置 onchange="changedMySelect(1, 2)" 将使用参数 12.

调用您的 changedMySelect 函数

为了让它接收事件和其他参数,您将不得不通过 javascript 来处理事件。此外,jQuery 的 trigger 需要参数作为数组,而不是单独的参数:

function changedMySelect(event, myParam1, myParam2) {
   alert(myParam1 + ' ' + myParam2);
}

// You need to do this instead of using onselect in the HTML
$("#mySelect").on("change", changedMySelect);

$("#mySelect").trigger("change", ["param1", "param2"]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="mySelect">
   <option value="test1">Test1</option>
   <option value="test2">Test2</option>
</select>